【Spring】核心概念:注解开发 管理第三方 Bean & 注入资源

新博客:https://blog.bigdataboy.cn/article/448.html

管理第三方 Bean

第三方 Bean 没有办法写给它注解,所以就只能添加,Spring 的处理是在配置类中写一个函数,该函数使用 @Beam 注解

第三方 Bean 配置类

第三方 Bean 的配置类,建议单独文件编写,这样不冗余,全部写一个配置类,会变得一大坨

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class JdbcConfig {

    @Bean  // 表示返回一个 Bean,也可以指定 id -> @Bean("dataSource")
    public DataSource dataSource() {  // 参数先空着
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("");
        dataSource.setUrl("");
        dataSource.setUsername("");
        dataSource.setPassword("");
        return dataSource;
    }
}

在主配置类导入第三方配置类

@Configuration
@ComponentScan({"cn.bigdataboy.dao"})
@Import({JdbcConfig.class}) // 导入
public class SpringConfig {
}

获取第三方 Bean

mark

第三方 Bean 的注入资源

上面的例子,JDBC的链接还空着,所以我们需要为其注入参数

注入简单类型

注入方式与注入自己的 Bean 一样,使用 成员属性 添加 @Value() 注解

import cn.bigdataboy.dao.NameDao;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class JdbcConfig {

    @Value("${jdbc.driver}")
    public String driverClassName;

    @Value("${jdbc.url}")
    public String url;

    @Value("${jdbc.username}")
    public String username;

    @Value("${jdbc.password}")
    public String password;

    @Bean  // 表示返回一个 Bean,也可以指定 id -> @Bean("dataSource")
    public DataSource dataSource() {
        System.out.println(this.driverClassName);
        System.out.println(this.url);
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(this.driverClassName);
        dataSource.setUrl(this.url);
        dataSource.setUsername(this.username);
        dataSource.setPassword(this.password);
        return dataSource;
    }
}

mark

注入引入类型

这里注入引入类型,有点不一样,直接添加成方法参数就好,因为Spring 容器中已经存在相应的 Bean,那么它也就能自己找到,因此也容易想到它是使用 类型方式 找的

import cn.bigdataboy.dao.NameDao;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class JdbcConfig {

    @Bean  // 表示返回一个 Bean,也可以指定 id -> @Bean("dataSource")
    public DataSource dataSource(NameDao nameDao) { // 添加成参数
        System.out.println(nameDao); // 打印一下,表示注入成功
        DruidDataSource dataSource = new DruidDataSource();
        // 相应配置
        return dataSource;
    }
}

mark

案例代码:https://pan.bigdataboy.cn/s/NO5sp

发表评论 / Comment

用心评论~