我是靠谱客的博主 着急黑猫,最近开发中收集的这篇文章主要介绍springboot四种属性注入方式一、文件二、在JdbcConfiguration类中注入JdbcProperties四种方式,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 一、文件
- 1、application.properties文件
- 2、JdbcProperties文件
- 3、JdbcConfiguration文件
- 二、在JdbcConfiguration类中注入JdbcProperties四种方式
- 1、@Autowired注入(常用方式)
- 2、构造函数注入
- 3、@Bean方法的参数注入
- 4、更优雅的注入
在上篇博文中,我们以连接池配置的例子实践了 spring框架中java配置方式的属性注入。不过属性注入使用的是@Value注解。这种方式虽然可行,但是不够强大,因为它 只能注入基本类型值。在 SpringBoot中,提供了一种新的属性注入方式, 支持各种java基本数据类型及复杂类型的注入。
一、文件
- 数据源文件:application.properties----------------------------------------写属性值
- 属性读取类文件:JdbcProperties-------------------------------------------读属性值
- 属性注入配置类文件:JdbcConfiguration-------------将属性值注入spring容器
1、application.properties文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123
2、JdbcProperties文件
package cn.itcast.springboot.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
//属性读取类
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
- 在类上通过@ConfigurationProperties注解声明当前类为属性读取类
- prefix="jdbc"读取属性文件中,前缀为jdbc的值。
- 在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致,并且必须具有getter和setter方法
- 需要注意的是,这里我们并没有指定属性文件的地址,SpringBoot默认会读取文件名为application.properties的资源文件,所以我们把jdbc.properties名称改为application.properties
3、JdbcConfiguration文件
通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象
二、在JdbcConfiguration类中注入JdbcProperties四种方式
1、@Autowired注入(常用方式)
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
@Autowired
private JdbcProperties jdbcProperties;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(jdbcProperties.getUrl());
dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
dataSource.setUsername(jdbcProperties.getUsername());
dataSource.setPassword(jdbcProperties.getPassword());
return dataSource;
}
}
2、构造函数注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
private JdbcProperties jdbcProperties;
public JdbcConfiguration(JdbcProperties jdbcProperties){
this.jdbcProperties = jdbcProperties;
}
@Bean
public DataSource dataSource() {
// 略
}
}
3、@Bean方法的参数注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
@Bean
public DataSource dataSource(JdbcProperties jdbcProperties){
DruidDataSource dataSourse = new DruidDataSource();
dataSourse.setDriverClassName(jdbcProperties.getDriverClassName());
dataSourse.setUrl(jdbcProperties.getUrl());
dataSourse.setUsername(jdbcProperties.getUsername());
dataSourse.setPassword(jdbcProperties.getPassword());
return dataSourse;
}
}
springboot这样做看似麻烦,却有一个实际的好处:Relaxed binding:松散绑定
- 不严格要求属性文件中的属性名与成员变量名一致。支持驼峰,中划线,下划线等等转换,甚至支持对象引导。比如:user.friend.name:代表的是user对象中的friend属性中的name属性,显然friend也是对象。@value注解就难以完成这样的注入方式。
4、更优雅的注入
事实上,如果一段属性只有一个Bean需要使用,我们无需将其注入到一个类(JdbcProperties)中。而是直接在需要的地方声明即可:
@Configuration
public class JdbcConfiguration {
@Bean
// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
我们直接把@ConfigurationProperties(prefix = “jdbc”)声明在需要使用的@Bean的方法上,然后SpringBoot就会自动调用这个Bean(此处是DataSource)的set方法,然后完成注入。使用的前提是:该类必须有对应属性的set方法!
最后
以上就是着急黑猫为你收集整理的springboot四种属性注入方式一、文件二、在JdbcConfiguration类中注入JdbcProperties四种方式的全部内容,希望文章能够帮你解决springboot四种属性注入方式一、文件二、在JdbcConfiguration类中注入JdbcProperties四种方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复