使用@Configuration扫描配置文件(@Configuration、@ConfigurationProperties和@PropertySource组合使用)
@Configuration:相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
比如我要写一个配置类,扫描我的数据库配置信息,那么我可以这样写
一、@Configuration+@ConfigurationProperties使用
配置文件(默认主配置文件)
配置文件的内容如下:
这里可以把spring.datasource当做类,url等当做属性,写出来一个OracleConfig的配置类,如下
OracleConfig 配置类(自定义)
package cn.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class OracleConfig {
private String url;
private String driver_class_name;
private String username;
private String password;
@Override
public String toString() {
return "OracleConfig{" +
"url='" + url + '\'' +
", driver_class_name='" + driver_class_name + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDriver_class_name() {
return driver_class_name;
}
public void setDriver_class_name(String driver_class_name) {
this.driver_class_name = driver_class_name;
}
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;
}
}
- 这样spring便把该组件加入到了容器中,我们到controller中调用测试一下:
测试
调用测试
同样不止这一种配置方式,下面一种:扫描指定配置文件
二、@Configuration+@PropertySource
新建redisConfig.properties配置文件
RedisConfig 配置类(自定义)
package cn.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:redisConfig.properties")
public class RedisConfig {
@Value("${redis.port}")
private int port;
@Value("${redis.ip}")
private String ip;
@Override
public String toString() {
return "RedisConfig{" +
"port=" + port +
", ip='" + ip + '\'' +
'}';
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}
测试
至此便是结束了!!!
|