SpringBoot Bean注入方式


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM