springboot 幾種屬性配置獲取
阿新 • • 發佈:2018-11-11
整個專案結構:
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