Spring Boot学习第二篇:Spring Boot特性

Spring Boot特性

构建Maven

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来覆盖它)。

标题

使用没有父POM的Spring Boot

<dependencyManagement>
     <dependencies>
        <dependency>
            
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-dependenciesartifactId>
            <version>1.3.0.RELEASEversion>
            <type>pomtype>
            <scope>importscope>
        dependency>
    dependencies>
dependencyManagement>

改变Java版本

<properties>
    <java.version>1.8java.version>
properties>

使用Spring Boot Maven插件

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抽象或绑定到结构化对象来访问。

@Value(“${xxx}”)

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);

    }
}

运行结果:
Spring Boot学习第二篇:Spring Boot特性_第1张图片

@ConfigurationProperties

使用@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方法上使用它

@Profile

Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。

Profile特定配置文件

application-{profile}.properties 如:application-prod.properties

在本地模拟出一个开发环境和生产环境
创建application-prd.properties 和 application-dev.properties

Spring Boot学习第二篇:Spring Boot特性_第2张图片

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 Boot学习第二篇:Spring Boot特性_第3张图片

修改spring.profiles.active为prd并启动
Spring Boot学习第二篇:Spring Boot特性_第4张图片

以编程方式设置profiles
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setAdditionalProfiles("prd");

你可能感兴趣的:(spring全家桶系列,spring,java)