只有 @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