1、问题描述
javacofig使用注解来描述Bean配置的组件,记录几个常用的注解,以便后续回顾。
2、问题说明
(1)@Configuration
在类上打上这一标签,表示这个类是配置类
(2)@Bean
bean的定义,相当于xml的
<bean id="laowangService" class="org.abc.map.LaowangService" />
(3)@Import注解须知
- @Import只能用在类上 ,@Import通过快速导入的方式实现把实例加入spring的IOC容器中
- 加入IOC容器的方式有很多种,@Import注解可以用于导入第三方包 ,当然@Bean注解也可以,但是@Import注解快速导入的方式更加便捷
启动类中加上@Enable**的,是用@import注解,加载到ioc容器中的。
(4)@ImportResource
相当于xml:
<import resource="applicationContext-xxx.xml">
(5)@PropertySource
spring 3.1开始引入,它是基于java config的注解,用于读取properties文件
(6)@AliasFor
表示别名,它可以添加到自定义注解的两个属性上,表示这两个属性互为别名。也就是说,这两个属性其实是同一个含义。
public @interface Configuration {
@AliasFor(annotation = Component.class)
String value() default "";
@Controller等注解本质上也是@Component
@SpringBootApplication注解,其实是三个注解的组合,分别是:
(7)@SpringBootConfiguration
@SpringBootConfiguration等同于@Configuration,带有spring的标志,是属于spring的一个配置类
(8)@EnableAutoConfiguration
@EnableAutoConfiguration 也是借助 @Import 的帮助,将所有符合自动配置条件的 bean 定义加载到 IoC 容器。
(9) ComponentScan()
相当于xml的<context:componentscan basepakage=>,默认情况下就不需要配置@ComponentScan这个注解了。 因为Application类,在启动的时候,默认是加载和Application类所在同一个目录下的所有类,包括所有子目录下的类。
更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。