只有 @ComponentScan 扫描到的类,并且符合(如:注解标识)注入标注的类,才会加入到spring容器中。
@ComponentScan 默认扫描【启动类同包】、以及【同包下所以子包】。
一、bean注入相关注解
1. 基础bean注入注解,加在类上
@Controller 控制层注解controller
@Service 业务层注解service
@Repository 数据层注解dao:开发中dao层通常扫描注入
@Component 通用注解
@Controller public class HelloController {} @Service public class HelloServiceImpl {} @Component public class Hello {}
2. 配置类注入相关注解
@Configuration 标记当前类是配置类,也会注入到容器中
@Bean 注入 Bean 标记 的方法 到容器中,结合Configuration 使用
@Configuration // 标记当前类是配置类 // 这里使用基础bean注入注解也能实现,@Bean注入,但是通常我们不这么做 public class MyConfiguration { // bean名称:方法名 ,bean类型: 方法返回类型 @Bean public XiaoHui xiaohui() { return new XiaoHui(); } }
3. 引入注入
@Import 引入指定类型注入容器(Bean名称:全路径,Bean类型:引入类型)
通常用于引入配置类,不用于引入对象
@Configuration // 标记当前类是配置类 @Import({XiaoHui.class, XxxConfiguration.class}) //引入类型,可以一次引入多个 public class MyConfiguration {}
4. 条件注入
@Conditional 条件注入系列

@Configuration // 标记当前类是配置类 public class MyConfiguration { @ConditionalOnMissingBean(value = XiaoHui.class) // 没有xxxBean时注入 @ConditionalOnClass(value = XiaoQing.class) // 有xxx类时注入 @Bean // 首先执行这个会注入 public XiaoHui xiaohui() { return new XiaoHui(); } @ConditionalOnMissingBean(value = XiaoHui.class) // 没有xxxBean时注入 @Bean // 上面注入了相同类型,就不会再次注入了,容器中不会出现 xiaohui2 为名称的Bean。 public XiaoHui xiaohui2() { return new XiaoHui(); } }
5. 引入XML格式文件注入Bean
@ImportResource 引入XML注入容器,标记的类要在容器中才能引入成功
@Configuration // 标记当前类是配置类 @ImportResource("classpath:beans.xml") // [classpath:] = resources文件夹 public class MyAppConfig { } ==============beans.xml================ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <bean id="qingqing" class="com.happig.springboot.bean.XiaoQing"> <property name="name" value="情情"/> </bean> <bean id="huihui" class="com.happig.springboot.bean.XiaoHui"> <property name="name" value="辉辉"/> </bean> </beans>
二、配置信息到 bean 中
@ConfigurationProperties + @Component 指定前缀 配置注入
@Component @ConfigurationProperties("qingqing") public class XiaoQing { private String name; private Integer age; } ======application.properties 配置文件======= qingqing.name=情情 qingqing.age=18
@ConfigurationProperties + @EnableConfigurationProperties 开启指定类型的 配置注入
@Configuration // 标记当前类是配置类 @EnableConfigurationProperties(XiaoQing.class) public class MyConfiguration {} @ConfigurationProperties("qingqing") public class XiaoQing { private String name; private Integer age; } ======application.properties 配置文件======= qingqing.name=情情 qingqing.age=18
参考:B站尚硅谷 springboot 学习记录
时间:2022年4月7日09:45:08