| 知乎专栏 |
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;
}
}