首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot-2.配置基础

Spring Boot-2.配置基础

作者头像
悠扬前奏
发布2019-05-28 12:37:13
4800
发布2019-05-28 12:37:13
举报

1. 基本配置

1.1 入口类

Spring Boot通常以一个名为*Application的类作为入口类,入口类里的main方法(即标准的Java应用的入口方法)作为Spring Boot应用项目的入口方法。 @SpringBootApplication是Spring Boot的核心注解,这是一个组合注解,源码为:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {
    Class<?>[] exclude() default {};
    String[] excludeName() default {};
    String[] scanBasePackages() default {};
    Class<?>[] scanBasePackageClasses() default {};
}

因此,不使用@SpringBootApplication注解,可以在入口类上直接使用@Configuration、@EnableAutoConfiguration、@ComponentScan。 其中@EnableAutoConfiguration让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。

Spring Boot 会自动扫描@SpringBootApplication所在类的同级包,以及包下的Bean。因此,建议入口类放置在groupId+artifactId组合的包名下。

1.2 自动配置的关闭

关闭特定的自动配置应该使用@SpringBootApplication注解的exclude参数。 例如:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

1.3 Banner

在Spring Boot启动的时候有一个默认的启动图像:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.9.RELEASE)

1.3.1 修改Banner

  1. 工具网站生成字符。
  2. 在/src/main/resources下新建banner.txt,将生成的字符复制到这个文件中。
  3. 再次启动程序,可以看到引导图案变成指定的样式。

1.3.2关闭Banner

  1. 在main函数中设置:
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);

1.4 Spring Boot的配置文件

Spring Boot的全局配置文件application.properties或者application.yml,位于/src/main/resources目录或类路径的/config下。

1.5 starter pom

通过使用应用场景所需要的start pom 。相关的技术配置将会消除,可以得到Spring Boot提供的自动配置的Bean。

1.5.1 官方提供的starter pom

名称

描述

spring-boot-starter

springboot核心starter ,包括自动配置,日志,yaml配置文件的支持

spring-boot-starter-actuator

准生产特性,用来监控和管理应用

spring-boot-starter-remote-shell

提供基于ssh协议的监控和管理

spring-boot-starter-amqp

使用spring-rabbit支持AMQP

spring-boot-starter-aop

使用AOP和AspectJ支持面向切面编程

spring-boot-starter-batch

对springBatch支持

spring-boot-starter-cache

对SpringCache抽象的支持

spring-boot-starter-cloud-connectors

对云平台(Cloud Foundry ,Heroku)提供的服务简化的连接方式

spring-boot-starter-data-elasticsearch

对spring-data-elasticsearch的支持

spring-boot-starter-data-gemfire

对分布式存储GemFire的支持

spring-boot-starter-data-jpa

对jpa的支持,包括spring-data-jap,spring-orm,Hibernate

spring-boot-starter-data-mongodb

通过spring-data-mongodb对mongodb的支持

spring-boot-starter-data-rest

通过spring-data-rest-webmvc对spring Data reposity暴露为REST形式的服务

spring-boot-starter-data-solr

通过spring-data-solr对Apache Solr的支持

spring-boot-starter-data-freemaker

对Freemaker的支持

spring-boot-starter-data-groovy-templates

对Groovy模版引擎的支持

spring-boot-starter-hateoas

通过spring-hateoas对基于HATEOAS的REST形式的网络服务的支持

spring-boot-starter-hornetq

通过HornetQ对JMS的支持

spring-boot-starter-integration

对系统集成框架spring-integration的支持

spring-boot-starter-jdbc

对JDBC数据库的支持

spring-boot-starter-jersey

对Jersey REST形式的网络服务的支持

spring-boot-starter-jta-atomikos

通过Atomikos对分布式事物的支持

spring-boot-starter-jta-bitronix

通过Bitronix对分布式事物的支持

spring-boot-starter-mail

对spring mail的支持

spring-boot-starter-mobile

对spring mobile的支持

spring-boot-starter-mustache

对Mustache模版引擎的支持

spring-boot-starter-redis

对键值对内存数据库Redis的支持,包含spring-redis

spring-boot-starter-security

对spring-security的支持

spring-boot-starter-social-facebook

通过spring-social-facebook 对facebook的支持

spring-boot-starter-social-twitter

通过spring-social-twitter 对twitter的支持

spring-boot-starter-social-linkedin

通过spring-social-linkedin 对linkedin的支持

spring-boot-starter-thymeleaf

对Thymeleaf模版引擎的支持,包含于spring的整合配置

spring-boot-starter-velocity

对velocity模版引擎的支持

spring-boot-starter-web

对web项目开发的支持,包含tomcat和spring-webmvc

spring-boot-starter-Tomcat

springboot默认容器tomcat

spring-boot-starter-Jetty

jetty容器

spring-boot-starter-undertow

Undertow容器

spring-boot-starter-logging

默认日志输出框架Logback

spring-boot-starter-log4j

支持log4j

spring-boot-starter-websocket

websocket的支持

spring-boot-starter-ws

spring webservice的支持

1.5.2 第三方starter pom

存在第三方为Spring Boot编写的starter pom。

1.6 使用xml配置

Spring Boot提倡零配置,即无xml配置,但是需要使用xml配置的话,可以通过Spring提供的@ImportResource来加载xml,例如:

@OmportResource({"classpath:some-context.xml","classpath:another-context.xml"})

2.外部配置

Spring Boot 允许使用properties文件,yaml文件或者命令行参数作为外部配置。

2.1命令行参数配置

Spring Boot可以基于jar包运行的,打包成jar包的程序可以通过以下命令运行:

java -jar xx.jar

因此可以通过设置java命令的参数为项目设定参数,例如修改Tomcat端口号:

java -jar xx.jar --server.port=9090

2.2 常规属性配置

在Spring Boot中,在application.properties文件中定义属性,直接使用@Value即可注入。

例如: (1)在application.properties中添加属性:

boot.author=asd
book.name=spring boot

(2)在类中可以用以下方式获取属性值:

@Value("${book.author}")
private String bookAuthor;
@Value("${book.name})
private String bookName;

2.3 类型安全的配置

Spring Boot可以通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全的配置。 例如: (1)在application.propertie中添加

author.name=asd
author.age=25

(2)在Bean进行关联

@Component
@ConfigurationProperties(perfix = "author")
public class AuthorSettings {
    private String name;
    private Long age;
    public String getName() {
        return name;
    }
    public Long getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Long age) {
        this.age = age;
    }
}

(3)在类中引用

@RestController
@SpringBootApplication
public class DemoApplication {

    @Autowired // 使用@Autowired直接注入
    private AuthorSettings authorSettings;

    @RequestMapping("/")
    public String index(){
        return "Author name is " + authorSettings.getName() + ", and the age is "  + authorSettings.getAge() + ".";
    }
    public static void main(String[] args){
        SpringApplication.run(DemoApplication.class,args);
    }
}

3. 日志配置

  • Spring Boot支持Java Util Logging、Log4J,Log4J2和Logback作为日志框架。
  • 选择框架后,Spring Boot会为当前日志框架的控制输出以及文件输出做好设置。
  • 默认情况下,Spring Boot使用Logback作为日志框架。
  • 配置日志文件:
logging.file=D:/logs/log.log
  • 配置日志文件
logging.level.org.springframework.web = DEBUG

4. Profile配置

*Profile是Spring根据不同的环境的不同配置来提供支持的。

  • 全局Profile使用application-{profile}.properties。
  • 通过在application.properties中设置spring.profiles.active = prod来制定活动的Profile
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 基本配置
    • 1.1 入口类
      • 1.2 自动配置的关闭
        • 1.3 Banner
          • 1.3.1 修改Banner
          • 1.3.2关闭Banner
        • 1.4 Spring Boot的配置文件
          • 1.5 starter pom
            • 1.5.1 官方提供的starter pom
            • 1.5.2 第三方starter pom
          • 1.6 使用xml配置
          • 2.外部配置
            • 2.1命令行参数配置
              • 2.2 常规属性配置
                • 2.3 类型安全的配置
                • 3. 日志配置
                • 4. Profile配置
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档