Spring 常用注解
@Value
注解 和 @ConfigurationProperties
都是为属性注入值,@Value
为单个属性注入值,@ConfigurationProperties
是批量注入
@Value
- 注入普通字符
@Value("common string")
- 注入配置文件
@Value("${prop.val}")
,prop.val
是application.properties
文件中配置的
@ConfigurationProperties
批量注入属性,但是需要每个属性都有setter
方法。这个注解经常是配合其他注解一起使用的。
配合类似@Component
或者 @Configuration
- 这两个注解
spring
都会把被注解的类注入到容器中去,此时直接使用@ConfigurationProperties
这个注解即可。 - 如果自己单独使用的话,需要在有类似
@Component
或者@Configuration
这样的类上使用@EnableConfigurationProperties
这个注解,把用@ConfigurationProperties
注解的类注入到spring
容器中。例如:@EnableConfigurationProperties(PersonProperties.class)
,PersonProperties.class
是被@ConfigurationProperties
注解的配置类
@Bean
和 @Component
区别
- @Component 一般加在类上
- @Bean 需要在配置类中使用,即类上需要加上@Configuration注解
那为什么有了@Component,还需要@Bean呢?
如果你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component注解的,因此就不能使用自动化装配的方案了,但是我们可以使用@Bean,当然也可以使用XML配置。
@Autowired
和 @Resource
- @Autowired 是由Spring提供的,按照类型进行注入
- @Resource 是J2EE 提供的,按照名字进行注入
@PropertySource
该注解可以把指定配置文件的配置属性,加载到Spring
容器的Environment
中去,但是要和@Configuration
这个注解一起使用。需要注意的是,如果自定义的properties
文件中的变量和application.properties
中的变量重复的话,application.properties
的优先级高。