springboot属性注入的四种方式
)
java配置
java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:
@Configuration
: 声明一个类作为配置类,代替xml文件@Bean
:生命在方法上,将方法的返回值加入Bean容器,代替xml文件@Value
:属性注入@PropertySource
: 指定外部属性文件
概述
spring3.0以后 注解已经非常完善了,因此spring推荐大家使用java配置代替以前的xml,下面举例讲述如何使用java配置 去获取配置文件中的值,下面以读取jdbc的配置为例。
一、@Autowired注入
1).第一种,加入数据库依赖
代码如下(示例):
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
2.数据库配置
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
3.读取数据库配置 的值
代码如下(示例):
@Configuration
@PropertySource("classpath:jdbc.properties")//读取资源文件
public class JdbcConfiguration {
// 获取配置文件中的值
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean //把方法的返回值 注入到spring容器
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(this.driverClassName);
druidDataSource.setUrl(this.url);
druidDataSource.setUsername(this.username);
druidDataSource.setPassword(this.password);
return druidDataSource;
}
4.验证
代码如下(最终读取成功):
以上是读取数据库配置的示例,大家学会了吗
如果没有看懂接下来再看第二个示例
2)第二种,使用步骤再列举个场景: 调用第三方时,把url地址配置到文件中去,用java+注解的方式获取配置文件的值
1.自定义配置
normal.url=http://192.168.123.252:8080/
2.读取配置文件
@Component
@PropertySource(value = {"classpath:application-dev.properties"} , ignoreResourceNotFound = true)
public class SpringConfig {
@Value("${normal.url}")
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
3.使用
@RestController
public class TestController{
@Autowired
SpringConfig config;
public void test() {
System.out.println(config.getUrl());
}
}
4 打印结果
http://192.168.123.252:8080/
3)、第三种,使用步骤
1.写数据库配置
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
2.配置读取数据库信息
数据库配置文件:
@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
}
读取数据库配置文件:
@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {
@Autowired
JdbcProperties jdbcProperties;
@Bean
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(jdbcProperties.getDriverClassName());
druidDataSource.setUrl(jdbcProperties.getUrl());
druidDataSource.setUsername(jdbcProperties.getUsername());
druidDataSource.setPassword(jdbcProperties.getPassword());
return druidDataSource;
}
}
打印结果:
最后通过 @Autowired注入DataSource 获取到数据库配置信息/
二、构造方法注入
二、使用步骤
1.写数据库配置
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
2.配置读取数据库信息
数据库配置文件:
@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
}
读取数据库配置文件:
@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {
@Autowired
JdbcProperties jdbcProperties;
//构造方法
public JdbcConfiguration(JdbcProperties jdbcProperties) {
this.jdbcProperties=jdbcProperties;
}
@Bean
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(jdbcProperties.getDriverClassName());
druidDataSource.setUrl(jdbcProperties.getUrl());
druidDataSource.setUsername(jdbcProperties.getUsername());
druidDataSource.setPassword(jdbcProperties.getPassword());
return druidDataSource;
}
}
3打印结果:
最后通过 @Autowired注入DataSource 获取到数据库配置信息/
三@Bean方法形参注入
二、使用步骤
1.写数据库配置
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
2.配置读取数据库信息
数据库配置文件:
@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
}
读取数据库配置文件:
@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {
//方法的形参方式注入
@Bean
public DataSource dataSource(JdbcProperties jdbcProperties){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(jdbcProperties.getDriverClassName());
druidDataSource.setUrl(jdbcProperties.getUrl());
druidDataSource.setUsername(jdbcProperties.getUsername());
druidDataSource.setPassword(jdbcProperties.getPassword());
return druidDataSource;
}
}
3打印结果:
最后通过 @Autowired注入DataSource 获取到数据库配置信息/
# 四、在@Bean方法上使用@ConfigurationProperties(prefix = “jdbc”) prefix 指定配置文件的前缀
二、使用步骤
1.写数据库配置
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
2.配置读取数据库信息
数据库配置文件:
@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
}
读取数据库配置文件:
@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource(JdbcProperties jdbcProperties){
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
}
3打印结果:
最后通过 @Autowired注入DataSource 获取到数据库配置信息/
总结
以上就是今天要讲的内容,简单介绍了获取配置文件信息的四种方式:
- @Autowired注入
- 构造方法注入
- @Bean方法形参注入
- 在@Bean方法上使用@ConfigurationProperties(prefix = “jdbc”) prefix 指定配置文件的前缀