JavaSpring Boot 中的启动类,会扫描所有的基包和子包,获取所有被注解@Bean标注方法的返回值,并将此返回值放入一个Bean容器中。
Bean 的注入
@Bean
在一个方法左边或者上面添加注解 @Bean 即可注册此方法
此方法被扫描到的前提是该方法所在的类被扫描到,因此,此方法所在的类需被以下注解标注:
- @Configuration: 声明配置类
- @Controller: 声明控制类
- @Service: 声明服务类
- @Repository:声明数据仓库
- @Component:如果不知道类属于什么模块,就用这个注解将类声明成组件。推荐使用此注解。
或者直接使用 @import 注解 直接在Spring Boot 中注册此方法 使用方法:@import({classA,...})
value|name 属性: 可以给Bean起别名,默认为函数名。 Bean("name")|Bean(value="name")|Bean(name="name")|Bean(name={"name1","name2","name3"})
autowireCandidate属性: 表示Bean是否采用默认的自动匹配机制,默认值为true,如果将其赋值为false,这个Bean就不会被默认的自动匹配机制匹配到,只能通过使用别名的方式匹配到。 使用方法: Bean(name="name",autowireCandidate=false) 使用场景: 当有两个一样名称和类型的Bean时,可以起别名,并将默认匹配方式取消,以去除冲突。
Bean 的获取
在属性前或上面添加注解 @Autowired 或者@Resource
@Autowired
自动获取与属性名相同的Bean,如果不存在属性名相同的Bean 则匹配类型相同的Bean(当匹配类型相同时,Bean容器中只能有一个此类型的Bean) 使用@Autowired 获取注解的方法 1、将属性名改为与Bean名相同 2、添加 @Qualifier 注解 通过 @Qualifier 注解的 value 属性确定 Bean 名称
@Autowired
@Qualifier("BeanName")
@Resource
@Resource 注解与 @Autowired 注解功能相同 并且自带 name 属性
@Resource(name="BeanName")
@Value
//注入常量 会将String 这个常量直接注入到属性x中
@Value("String")
String x;
// 注解Bean
@Value("#{BeanName}")
// 注入配置文件
@Value("${ConfigName}")
第三章实验
此实验要求用三个函数在终端打印三句话。
把打印语句分别放到三个函数中,并将三个函数都注册一遍。