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