知乎专栏 |
application.properties
server.name=Linux server.host=192.168.0.1,172.16.0.1
@Value("${server.name}") private String name;
Application.java 配置NetkillerProperties.java是 @ComponentScan 扫描范围,可以不用声明下面注解。
@EnableConfigurationProperties(NetkillerProperties.class)
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.authentication.UserCredentials; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.SimpleMongoDbFactory; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import com.mongodb.Mongo; import pojo.NetkillerProperties; @Configuration @SpringBootApplication @EnableConfigurationProperties(NetkillerProperties.class) @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) @ComponentScan({ "web", "rest" }) @EnableMongoRepositories public class Application { @SuppressWarnings("deprecation") public @Bean MongoDbFactory mongoDbFactory() throws Exception { UserCredentials userCredentials = new UserCredentials("finance", "your_password"); return new SimpleMongoDbFactory(new Mongo("mdb.netkiller.cn"), "finance", userCredentials); } public @Bean MongoTemplate mongoTemplate() throws Exception { return new MongoTemplate(mongoDbFactory()); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
NetkillerProperties.java
package pojo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @ConfigurationProperties(prefix="netkiller") public class NetkillerProperties { private String name; private String email; private String home; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getHome() { return home; } public void setHome(String home) { this.home = home; } @Override public String toString() { return "NetkillerProperties [name=" + name + ", email=" + email + ", home=" + home + "]"; } }
IndexController.java
package web; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import domain.City; import pojo.NetkillerProperties; import repository.CityRepository; @Controller public class IndexController { @Autowired private CityRepository repository; @Autowired private NetkillerProperties propertie; @RequestMapping("/index") @ResponseBody public String index() { //public ModelAndView index() { String message = "Hello"; //return new ModelAndView("home/welcome", "variable", message); return message; } @RequestMapping("/config") @ResponseBody public String config() { return propertie.toString(); } }
src/main/resource/application.properties
netkiller.name=Neo netkiller.email=netkiller@msn.com netkiller.home=http://www.netkiller.cn
@ConfigurationProperties 默认配置是 application.properties
你可以通过 locations 指向特定配置文件
@ConfigurationProperties(prefix = "message.api",locations = "classpath:config/message.properties")
@EnableConfigurationProperties 可以导入多个配置文件
@EnableConfigurationProperties({NetkillerProperties.class, NeoProperties.class})
@PropertySource(value = "classpath:netkiller.properties", encoding = "UTF-8", ignoreResourceNotFound = true)
@PropertySource("classpath:/config.properties}") 忽略FileNotFoundException,当配置文件不存在系统抛出FileNotFoundException并终止程序运行,ignoreResourceNotFound=true 会跳过使程序能够正常运行 @PropertySource(value="classpath:config.properties", ignoreResourceNotFound=true)
载入多个配置文件
@PropertySources({ @PropertySource("classpath:config.properties"), @PropertySource("classpath:db.properties") })
test.properties
name=Neo age=30
package cn.netkiller.web; import java.util.Date; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @PropertySource("classpath:test.properties") public class TestController { @Autowired Environment environment; @Value("${age}") private String age; public TestController() { // TODO Auto-generated constructor stub } // 环境变量方式 @RequestMapping("/test/env") @ResponseBody public String env() { String message = environment.getProperty("name"); return message; } @RequestMapping("/test/age") @ResponseBody public String age() { String message = age; return message; } }