• 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(默认):定义导入的配置类类名,当配置类有多个时使用数组格式一次性导入多个配置类

  • 相关阅读:
    基于症状自评量表SCL90的人才测评之心理素质测验
    c++基础概念,const与指针、引用的关系,auto,decltype关键字能干啥总得了解吧。总得按照需求自定义创建实体类,自己编写头文件吧
    Windows 环境下的 Socket 编程 2 - 地址族与数据序列
    高通WLAN框架学习(30)-- 支持双STA的组件
    微软云计算[2]之微软云关系数据库SQL Azure
    MyBatis-plus 分页功能实现
    可视化图表组件之股票数据分析应用
    机器学习分类方法
    ASP.NET6 + Mongo + OData
    MyBatis-Plus(二)
  • 原文地址:https://blog.csdn.net/weixin_51725434/article/details/127379253