{{format('0')}} {{format('270')}} {{format('3046')}}

【Spring】核心概念:注解开发 管理第三方 Bean & 注入资源 [ 编程杂谈 ]

大数据男孩 文章 正文

想做一个技术博客,奈何实力不够
分享

明妃

{{nature("2022-09-15 17:48:57")}}更新

管理第三方 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

评论 0
0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}
TOP 2
Spark 2.0 单机模式与集群模式 安装

{{nature('2020-01-02 16:47:07')}} {{format('12517')}}人已阅读

TOP 3
Office 2016 Pro Plus 激活

{{nature('2019-12-11 20:43:10')}} {{format('9403')}}人已阅读

TOP 4
Linux上 MySQL 开启远程登陆的两种方法

{{nature('2019-12-26 17:20:52')}} {{format('7394')}}人已阅读

TOP 5
Linux 安装 MySQL 5.7

{{nature('2019-12-26 16:03:55')}} {{format('4873')}}人已阅读

目录

标签云

Java Spring 注解

一言

# {{hitokoto.data.from || '来自'}} #
{{hitokoto.data.hitokoto || '内容'}}
作者:{{hitokoto.data.from_who || '作者'}}
自定义UI
配色方案

侧边栏