//标明当前是一个配置类
@Configuration
//往spring的IOC容器中注册一个bean
@Bean
//会扫描该注解指定的配置类
@ComponentScan
//声明bean的在spring的IOC容器中的生命周期(创建方式)
@Scope
//当使用@Scope注解的singleton属性时,加上@Lazy注解,则bean的实例会在第一次使用的时候被创建
@Lazy
//按照条件注册bean
//Condition:实现匹配条件
@Conditional
//给容器导入一个组件,id默认时全类名
//ImportSelector:返回需要导入到容器中的组件全类名数组
@Import
//在bean创建完成并且属性赋值完成,来执行初始化方法
@PostConstruct
//在容器销毁bean之前通知我们进行清理工作
@PreDestroy
/**
1、基本数值
2、可以写SpEL:#{}
3、可以写${};取出配置文件中的值(在运行环境变量里面的值)
*/
@Value()
//使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出
//配置文件的值
@PropertySource(value={"classpath:/person.properties"})
/**
自动注入:
1、默认优先按照类型去容器中找对应的组件;
2、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找;
*/
@Autowired
//指定需要装配的组件的id,而不是使用属性名
@Qualifier
//让spring进行自动装配的时候,默认使用首选的bean;
//也可以继续使用@Qualifier指定需要装配的bean的名字。
@Primary
//当classpath下发现该类的情况下进行自动配置
@ConditionalOnClass
//当spring上下文中不存在该Bean时生效
@ConditionalOnMissingBean
//当容器中有指定的Bean的条件下
@ConditionalOnBean
//使标注有@ConfigurationProperties注解的类生效。
@EnableConfigurationProperties
//当配置文件中cn.sp.enabled=true时有效
@ConditionalOnProperty(prefix="cn.sp",value="enabled",havingValue="true")