• SpringBoot第三方bean管理


    一、第三方Bean管理

    我们经常在开发中给自己的类上面写注解就可以把Bean交给IOC容器管理并DI(依赖注入)。但是如果是第三方的类呢?不能在类上面添加注解,实现DI(依赖注入)。

    Spring提供了一种更加灵活的方式来定义bean,通过@Bean注解。

    我们以druid为例,使用注解对它进行管理:

    二、管理第三方Bean的步骤

    步骤一:导入对应的jar包

    1. <dependency>
    2. <groupId>com.alibabagroupId>
    3. <artifactId>druidartifactId>
    4. <version>1.2.6version>
    5. dependency>

    步骤二:新增加一个管理Druid的外部配置类-JdbcConfig。

    为了方便管理,外部配置类与主配置类SpringConfig分开,并在主配置类中导入外部配置类JdbcConfig

    1. //不需要@Configuration,由主配置类提供
    2. public class JDBCConfig {
    3. //使用@Value注解引入值
    4. @Value("${datasource.username}")
    5. private String userName;
    6. @Value("${datasource.password}")
    7. private String password;
    8. @Bean
    9. public DruidDataSource dataSource(){
    10. DruidDataSource dataSource = new DruidDataSource();
    11. dataSource.setUsername(userName);
    12. dataSource.setPassword(password);
    13. return dataSource;
    14. }
    15. }

     注意:不能使用DataSource ds = new DruidDataSource(),因为DataSource接口中没有对应的setter方法来设置属性。

    2. application.yml配置

    1. datasource:
    2. username: root
    3. password: 123456

    步骤三:在主配置类SpringConfig上面导入Druid配置类

    1. @Configuration //配置的Bean注解
    2. @Import({JDBCConfig.class}) //使用Import导入分配置类
    3. public class SpringConfig {
    4. }

    步骤四:从IOC容器中获取对象并打印

    1. @SpringBootApplication
    2. public class Application {
    3. public static void main(String[] args){
    4. ApplicationContext ctx = SpringApplication.run(Application.class,args);
    5. DruidDataSource dataSource = ctx.getBean(DruidDataSource.class);
    6. System.out.println("userName:"+dataSource.getUsername()+
    7. ",password:"+dataSource.getPassword());
    8. }
    9. }

    三、总结

    3.1 @Bean注解

    名称@Bean
    类型方法注解
    位置方法定义上方
    作用设置该方法的返回值作为spring管理的bean,
    属性value默认为方法名,就是xml中的bean id

    3.2 @Import

    名称@Import
    类型类注解
    位置类定义上方
    作用导入配置类
    属性value(默认):定义导入的配置类类名,当配置类有多个时使用数组格式一次性导入多个配置类

  • 相关阅读:
    解决spawn-fcgi:child exited with: 127/126/1报错
    FAST-LIO(二):程序运行&代码注释
    STM32 内部ADC方式_解释(AN2834)
    dbForge SQL Complete据库范围的配置
    Linux 权限
    避免 WebSocket 连接被拒绝
    策略模式(Strategy mode)
    帕累托分析中的累计优化
    【Java 基础篇】Java同步代码块解决数据安全
    GBase 8a常用命令
  • 原文地址:https://blog.csdn.net/weixin_51725434/article/details/127379253