Spring Boot的属性注入:
以数据源的属性注入为例
(1)@Value注入
准备工作:首先引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency
创建jdbc.Properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///hibernate
jdbc.username=root
jdbc.password=123456
然后创建一个JdbcConfig,
@Configuration
//打了这个注解,相当于JdbcConfig就是一个xml文件了,需要自己手动返回一个Bean,使用时,会从spring容器中获取。
@PropertySource("classpath:jdbc.properties")
//读取外部的jdbc.properties文件
public class JdbcConfig {
@Value("${jdbc.url}")
String url;
@Value("${jdbc.driverClassName}")
String driverClassName;
@Value("${jdbc.username}")
String username;
@Value("${jdbc.password}")
String password;
@Bean
public DataSource dataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setDriverClassName(driverClassName);
datasource.setUrl(url);
datasource.setUsername(username);
datasource.setPassword(password);
return datasource;
}
}
写一个接口,声明一个DataSource类型的datasource,自动注入
@RestController
public class HelloController {
@Autowired
private DataSource datasource;
@GetMapping("hello")
public String hello() {
return "hello,springboot";
}
}
打个断点,调试一下 可以看到dataSource的属性有值了

(2)使用set方法注入
创建一个application.properties文件,把jdbc.properties中的内容复制
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///hibernate
jdbc.username=root
jdbc.password=123456
新建一个JdbcProperties,@Data注解,使用set方法注入数据源属性
@ConfigurationProperties(prefix = "jdbc")
@Data
//@Component
/**
*jdbcProperties使用@Component,JdbcConfig就不用加@EnableConfigurationProperties(JdbcProperties.class);反之,JdbcConfig不使用,就加。
*/
public class JdbcProperties {
String url;
String driverClassName;
String username;
String password;
}
JdbcConfig中直接注入JdbcProperties文件,使用jdbc.属性 来给数据源赋值
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DataSource dataSource(JdbcProperties jdbc) {
DruidDataSource datasource = new DruidDataSource();
datasource.setDriverClassName(jdbc.driverClassName);
datasource.setUrl(jdbc.url);
datasource.setUsername(jdbc.username);
datasource.setPassword(jdbc.password);
return datasource;
}
}
也可以,不用新建jdbcProperties文件,直接修改jdbcConfig,这样就可以直接自动注入到数据源中。不用再通过一个中间文件注入,简化了操作
@ConfigurationProperties(prefix ="jdbc")
@Bean
public DataSource dataSource() {
DruidDataSource datasource = new DruidDataSource();
return datasource;
}
版权声明:本文为weixin_33407107原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。