标签:qualifier url coding 单例 使用 师傅 config pass enc
title: 关于spring boot 注入相关经验
date: 2019-07-27 06:54:30
categories:
这里是最近重新学习Spring boot关于注入相关的经验博客,特此记录一下:
在学习java web的时候,有使用过一个叫jdbcTemplate的东西。所以下面这个代码极为熟悉:
@Configuration
public class Springconfig {
@Bean
public JdbcTemplate jdbcTemplate(){
return new JdbcTemplate();
}
}
首先要说几点就是,这个@Configuration是必须要写的,如果没有写,这个Bean是不生效的。
我们创建了一个jdbcTemplate的单例,接下来是怎么注入的问题。
我一开始写的代码是这样的。
class xxx{
@Autowired
JdbcTemplate jdbc;
}
这里其实是错误的,因为他会自动注入Springboot里面的这个类,我问了一下我的师傅,他和我说:
这是因为xxx这个类没有托管给Spring工厂,加一个@Component就OK了
我最近弄cdc的时候需要用到多数据源,下面是注入时的一些小经验
spring:
datasource:
dynamic:
primary: target
batch:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/springbatch?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123
origin:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123
target:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/target_test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123
创建一个config
@Configuration
public class DataSourceConfig {
@Bean("batchDataSource")
@ConfigurationProperties("spring.datasource.dynamic.batch")
public DataSource batchDataSource(){
return DataSourceBuilder.create().build();
}
@Bean("originSource")
@ConfigurationProperties("spring.datasource.dynamic.origin")
public DataSource originDataSource(){
xxx
}
@Bean("targetSource")
@ConfigurationProperties("spring.datasource.dynamic.target")
@Primary
public DataSource targetDataSource(){
xxx
}
}
说个重要的,当你的Bean后面写了名称的时候,如果想注入这个东西,你需要用到下面的代码
// 第一种
@Autowired
@@Qualifier("batchDataSource") DataSource dataSource;
//第二种
method(@Qualifier("batchDataSource") DataSource dataSource){
}
总之@Qualifier这个注解一定要会
标签:qualifier url coding 单例 使用 师傅 config pass enc
原文地址:https://www.cnblogs.com/adroitwolf/p/14439325.html