赞
踩
java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:
@Configuration
: 声明一个类作为配置类,代替xml文件@Bean
:生命在方法上,将方法的返回值加入Bean容器,代替xml文件@Value
:属性注入@PropertySource
: 指定外部属性文件spring3.0以后 注解已经非常完善了,因此spring推荐大家使用java配置代替以前的xml,下面举例讲述如何使用java配置 去获取配置文件中的值,下面以读取jdbc的配置为例。
代码如下(示例):
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
代码如下(示例):
@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; }
代码如下(最终读取成功):
以上是读取数据库配置的示例,大家学会了吗
如果没有看懂接下来再看第二个示例
再列举个场景: 调用第三方时,把url地址配置到文件中去,用java+注解的方式获取配置文件的值
normal.url=http://192.168.123.252:8080/
@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;
}
}
@RestController
public class TestController{
@Autowired
SpringConfig config;
public void test() {
System.out.println(config.getUrl());
}
}
http://192.168.123.252:8080/
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
数据库配置文件:
@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 获取到数据库配置信息/
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
数据库配置文件:
@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; } }
最后通过 @Autowired注入DataSource 获取到数据库配置信息/
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
数据库配置文件:
@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;
}
}
最后通过 @Autowired注入DataSource 获取到数据库配置信息/
代码如下(示例):
jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
数据库配置文件:
@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;
}
}
最后通过 @Autowired注入DataSource 获取到数据库配置信息/
以上就是今天要讲的内容,简单介绍了获取配置文件信息的四种方式:
- @Autowired注入
- 构造方法注入
- @Bean方法形参注入
- 在@Bean方法上使用@ConfigurationProperties(prefix = “jdbc”) prefix 指定配置文件的前缀
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。