@SpringBootApplication&多环境配置&引入外部配置信息

1.@SpringBootApplication概述

@SpringBootApplication是一个组合注解

(1)@SpringBootApplication就是@Configuration注解,代表启动类就是配置类

 (2)@EnableAutoConfiguration帮你实现自动装配,SpringBoot工程启动时,运行一个SpringFactoriesLoader的类,加载META-INF/spring.factories配置类(已经开启的),通过SpringFactoriesLoader中的load方法,以for循环的方式,一个一个加载。

好处:无需编写大量的整合配置信息,只需要按照SpringBoot提供好了约定去整合即可。

坏处:如果说你导入一个starter依赖,那么你就需要填写他必要的配置信息。

手动关闭自动装配指定内容:@SpringBootApplication(exclude=QuartzAutoConfiguration.class)

 就是帮你去实现之前SpringMVC里面的内容,不用再自己写了

(3)@ComponentScan就相当于<context:component-scan basePackage="包名"/>,帮助扫描注解的

2.多环境配置

多环境配置,指的就是,我们在开发时候,如指定一个port,部署的时候指定另外一个port,我们直接可以在appliaction中预加

 

在application.yml文件中添加一个配置项:

spring:

  profiles:

    active: 环境名

在resource目录下,创建多个application-环境名.yml文件即可

在部署工程时,通过java -jar jar文件 --spring.profiles.active=环境

 开发时候用的application-dev.yml,需要在application.yml中指定

application.yml

在application-dev.yml

 在application-prov.yml

 当我部署的时候,直接用jar包,不用再手动修改yml文件中内容

也可以在application.yml中将三个yml合并成一个

3.引入外部配置文件信息

和传统的SSM方式一样,通过@Value的注解去获取properties/yml文件中的内容

 在controller中

 

如果在yml中需要编写大量的自定义配置,并且具有统一的前缀时,可以采用如下的方式

 

 

package com.company.demo.properites;

import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperties {
    private String xxxx;
    private String yyyy;
    private String aaaa;
    private String bbbb;
}

  HelloController.java

package com.company.demo.controller;

import com.company.demo.entiy.User;
import com.company.demo.properites.AliyunProperties;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!!!!******";
    }

    @Resource(name = "user1")
    private User user;

    @GetMapping("/user")
    public User user() {
        return user;
    }

    @Value("${picPath}")
    private String picPath;

    @GetMapping("/picPath")
    public String picPath() {
        return picPath;
    }

    @Autowired
    private AliyunProperties aliyunProperties;

    @GetMapping("/aliyun")
    public AliyunProperties aliyun() {
        return aliyunProperties;
    }


}

 

 

posted @ 2021-05-10 10:47  GumpYan  阅读(548)  评论(0编辑  收藏  举报