天天看点

Spring官方工作 / 面试必备常用注解详解@Configuration@ConfigurationProperties

Spring3.0开启了伟大的注解时代,替代了传统的xml配置,注解使得我们的开发更加高效!

再不怕没时间陪对象啦!

@Configuration

显式指定与此Configuration类关联的Spring bean定义的名称。 如果未指定(这是最常见的情况,SE们都太懒了!),将自动生成bean名称

仅当通过组件扫描获取Configuration类或直接提供给AnnotationConfigApplicationContext时,自定义名称才适用。

如果将Configuration类注册为传统的XML bean定义,则bean元素的名称/ id将优先。

返回的是建议的组件名称,如果有的话(否则为空字符串)

Spring官方工作 / 面试必备常用注解详解@Configuration@ConfigurationProperties

@Configuration使用

下面是一个使用实例,创建了一个userService和accountService的实例,accountService实例引用userService实例。

@Configuration
@ComponentScan(basePackages = { "com.test.web" })
@Import(UserConfg.class)
@ImportResource(locations = {"classpath:config/spring-beans.xml"})
public class MainConfg {

    @Bean(name = "userService", initMethod = "init", destroyMethod = "destroy")

    @Scope("singleton")

    public UserService userService() {

        return new UserService();

    }

    @Bean

    public AccountService accountService(UserService userService) {

        AccountService as = new AccountService();

        as.setUserService(userService);

        return as;

    }
}
      

注解说明

@Configuration:代表这个类是一个配置类。

@ComponentScan:用来扫描指定包下面的注解类。

@Import:用来导入其他的@Configuration配置类。

@ImportResource:用来导入xml配置文件,比如某些配置一定要xml配置。

@Bean:用来定义一个bean,可以指定初始、销毁方法,及bean范围等。

这些注解都在spring-context包下,还有其他注解用来解放xml形式的配置,大量xml配置可java配置化,只要定义好,Spring会自动扫描包下面的@Configuration注解的配置文件类来装配。

@ConfigurationProperties

Spring官方工作 / 面试必备常用注解详解@Configuration@ConfigurationProperties

外化配置的注释。 如果要绑定并验证某些外部属性(例如,来自.properties文件),请将其添加到@Configuration类中的类定义或方法。

与 @Value 相反,由于属性值被外部化,因此不会评估SpEL表达式
Spring官方工作 / 面试必备常用注解详解@Configuration@ConfigurationProperties