整个项目结构:
1.通过 Environment 去获取属性配置值
2.通过类注解@Component 获取类对象,再通过对象获取属性值,通过 @Value("${redis.port:6380}") 给对应属性赋值或者添加默认值
3.通过注解//@Component @ConfigurationProperties(prefix = "gerry.properties") 类来给对应属性赋值
4.通过@Configuration 创建注解,再方法中创建对应的对象方法
同级目录properties文件优先于yaml文件属性,-D设置优先 properties文件
以下为源码:
@SpringBootApplication
public class BootstartApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(BootstartApplication.class, args);
User user = context.getBean("user", User.class);
// User user01 = context.getBean("createUser", User.class);
User user01 = context.getBean("user01", User.class);
System.out.println(user + "||" + user01);
/*
* 1.通过 Environment 去获取属性配置值
* */
ConfigurableEnvironment environment = context.getEnvironment();
String property = environment.getProperty("local.ip.addr");
System.out.println("local.id.addr::"+property);
/*
* 2.通过类注解@Component 获取类对象,再通过对象获取属性值,通过 @Value("${redis.port:6380}") 给对应属性赋值或者添加默认值
* */
RedisConfig redisConfig = context.getBean("redisConfig", RedisConfig.class);
System.out.println("redis:"+redisConfig.getPort()+" || "+redisConfig.getHost()+" || "+redisConfig.getAuth());
/*
* 3.通过注解//@Component @ConfigurationProperties(prefix = "gerry.properties") 类来给对应属性赋值
*
* */
DataSources dataSources = context.getBean(DataSources.class);
String s = dataSources.toString();
System.out.println("datasout:"+s);
/*
* 4.通过@Configuration 创建注解,再方法中创建对应的对象方法
* */
DataSourceConfig bean = context.getBean(DataSourceConfig.class);
DataSources dataSources1 = bean.getDataSources();
System.out.println("username::"+dataSources1.getUsername());
}
}
@Component
public class User {
private Integer id;
private String name;
private Integer age;
public User() {
System.out.println("===========user===========");
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
@Component
public class RedisConfig {
@Value("${redis.port:6380}")
private int port;
@Value("${redis.host:192.168.1.222}")
private String host;
@Value("${redis.auth:123456}")
private String auth;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getAuth() {
return auth;
}
public void setAuth(String auth) {
this.auth = auth;
}
}
//@Component
//@ConfigurationProperties(prefix = "gerry.properties")
public class DataSources {
private String driverClassName;
private String username;
private String password;
private String url;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
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;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
@Override
public String toString() {
return "DataSources{" +
"driverClassName='" + driverClassName + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
", url='" + url + '\'' +
'}';
}
}
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "gerry.properties")
public DataSources getDataSources(){
return new DataSources();
}
}
application.properties
local.ip.addr=192.168.1.110
redis.port = 6379
redis.host = 192.168.3.11
redis.auth = redis-01
gerry.properties.driverClassName = com.mysql.jdbc.Driver
gerry.properties.username = wl
gerry.properties.password = 123456
gerry.properties.url = jdbc:mysql:///db