Maven用户可以继承spring-boot-starter-parent项目来获取默认设置。该父项目提供以下特性:
- 默认编译级别为Java 1.6 源码编码为UTF-8
- 一个依赖管理节点,允许你省略普通依赖的标签,继承自spring-boot-dependencies POM。
- 合适的资源过滤 合适的插件配置(exec插件,surefire,Git commit ID,shade)
- 针对application.properties和application.yml的资源过滤
- 最后一点:由于默认配置文件接收Spring风格的占位符(${…}),Maven
- filtering改用@..@占位符(你可以使Maven属性resource.delimiter来覆盖它)。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-dependenciesartifactId>
<version>1.3.0.RELEASEversion>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<properties>
<java.version>1.8java.version>
properties>
Spring Boot包含一个Maven插件,它可以将项目打包成一个可执行jar
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
Spring Boot允许使用properties文件、yaml文件或者命令行参数作为外部配置
使用@Value注解,可以直接将属性值注入到你的beans中,并通过Spring的Environment抽象或绑定到结构化对象来访问。
application.properties
在properties文件中增加几个属性
server.port=8081
server.context-path=/demo
#声明一个name属性
users.name=zhangsan
user.age=22
DemoApplication.java
@SpringBootApplication
@RestController
public class DemoApplication {
@Value("${users.name}")
private String name;
@Value("${user.age}")
private String age;
@RequestMapping("/")
String home() {
return "Hello World,name is" + name + ", age is"+ age;
}
public static void main(String[] args) {
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setBannerMode(Mode.OFF);
app.run(args);
}
}
使用@Value(“${property}”)注解注入配置属性有时可能比较笨重,特别是需要使用多个properties或你的数据本身有层次结构。为了控制和校验你的应用配置,Spring Boot提供一个允许强类型beans的替代方法来使用properties。
application.properties
在properties文件中增加几个属性
users.servers[0]=dev.bar.com
users.servers[1]=foo.bar.com
添加ConnectionSettings 类
@Component
/*Spring Boot 会将users开头的属性按照名字匹配注入到ConnectionSettings对象中。*/
@ConfigurationProperties(prefix="users")
public class ConnectionSettings {
private String name;
private Integer age;
private List servers = new ArrayList();
// ... getters and setters
}
然后只需要注入ConnectionSettings 就ok了
@Autowired
private ConnectionSettings connection;
同样的@ConfigurationProperties也可以在@Bean方法上使用它
Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。
application-{profile}.properties 如:application-prod.properties
在本地模拟出一个开发环境和生产环境
创建application-prd.properties 和 application-dev.properties
application-dev.properties
server.port=8080
server.context-path=/demo
users.name=zhangsan
users.age=22
users.servers[0]=dev.bar.com
users.servers[1]=foo.bar.com
application-prd.properties
server.port=8081
server.context-path=/demo
users.name=zhangsan
users.age=22
users.servers[0]=dev.bar.com
users.servers[1]=foo.bar.com
application.properties
spring.profiles.active=dev
修改spring.profiles.active为prd并启动
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setAdditionalProfiles("prd");