一文了解和 Spring Bean 有关的那些注解

作者:CQITer小编 时间:2019-07-02 16:54

字号

随着Spring的流行,我们经历过基于XML-Based 的配置,随着SpringBoot的流行,我们逐渐使用基于注解的配置替换掉了基于XML-Based的配置,那么你知道基于注解的配置的基础组件都是什么吗?都包括哪些要素?那么本节就来探讨一下。注:本篇文章更多的是讨论Spring基于注解的配置一览,具体的技术可能没有那么深,请各位大佬见谅。

一文了解和 Spring Bean 有关的那些注解

探讨主题:

基础概念:@Bean 和 @Configuration

使用AnnotationConfigApplicationContext 实例化Spring容器

使用@Bean 注解

使用@Configuration 注解

编写基于Java的配置

Bean定义配置文件

PropertySource 抽象类

使用@PropertySource

占位符的声明

基础概念:@Bean 和 @Configuration

Spring中新的概念是支持@Bean注解 和 @Configuration 注解的类。@Bean 注解用来表明一个方法实例化,配置并且通过IOC容器初始化并管理一个新的对象。@Bean注解就等同于XML-Based中的标签,并且扮演了相同的作用。你可以使用基于注解的配置@Bean 和 @Component,然而他们都用在@Configuration配置类中。

使用@Configuration 注解的主要作用是作为bean定义的类,进一步来说,@Configuration注解的类允许通过调用同类中的其他@Bean标注的方法来定义bean之间依赖关系。如下所示:

新建一个maven项目(我一般都直接创建SpringBoot项目,比较省事),创建AppConfig,MyService,MyServiceImpl类,代码如下:

@Configuration 

public class AppConfig { 

 

    @Bean 

    public MyService myService(){ 

        return new MyServiceImpl(); 

    } 

 

public interface MyService {} 

public class MyServiceImpl implements MyService {} 

上述的依赖关系等同于XML-Based:

<beans> 

    <bean id="myService",class="com.spring.annotation.service.impl.MyServiceImpl"/> 

</beans> 

使用AnnotationConfigApplicationContext 实例化Spring容器

AnnotationConfigApplicationContext 基于注解的上下文是Spring3.0 新添加的注解,它是ApplicationContext的一个具体实现,它可以接收@Configuration注解的类作为输入参数,还能接收使用JSR-330元注解的普通@Component类。

当提供了@Configuration 类作为输入参数时,@Configuration类就会注册作为bean的定义信息并且所有声明@Bean的方法也都会作为bean的定义信息。

当提供@Component和JSR-330 声明的类时,他们都会注册作为bean的定义信息,并且假设在必要时在这些类中使用诸如@Autowired或@Inject之类的注解

简单的构造

在某些基于XML-Based的配置,我们想获取上下文容器使用ClassPathXmlApplicationContext,现在你能够使用@Configuration 类来实例化AnnotationConfigApplicationContext。

在MyService中添加一个printMessage()方法,实现类实现对应的方法。新建测试类进行测试

public class ApplicationTests { 

 

    public static void main(String[] args) { 

        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); 

        MyService service = context.getBean(MyService.class); 

          // printMessage() 输出something... 

        service.printMessage(); 

    } 

如前所述,AnnotationConfigApplicationContext不仅限于使用@Configuration类。任何@Component或JSR-330带注释的类都可以作为输入提供给构造函数,如下例所示

public class ApplicationTests { 

 

    public static void main(String[] args) { 

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>Spring Bean 配置
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接