一、启动类

在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法:

  SpringApplication.run(SampleController.class, args);

或者流式API

  new SpringApplicationBuilder().run(args);

二、核心注解

  启动类上面的注解是@SpringBootApplication,它也是Spring Boot的核心注解,主要组合包含了以下3个注解:

    @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。

    @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

    @ComponentScan:Spring组件扫描。

三、配置文件

Spring Boot有两种类型的配置文件,application和bootstrap文件

  application配置文件是应用级别的,是当前应用的配置文件

  bootstrap配置文件是系统级别的,用来加载外部配置,如配置中心的配置信息,也可以用来定义系统不会变化的属性。bootstatp文件的加载先于application文件。

Spring Boot会自动加载classpath目前下的这两个文件,文件格式为properties或者yml格式。

  *.properties属性文件,最常见的key=value

  *.yml文件,是yaml格式的文件,yaml是一种非常简洁的标记语言

    key: value的形式(:后面必须有空格),层次感更强,复用性更好

    *.yml加载的属性是有顺序的,但不支持@PropertySource注解来导入配置,一般推荐用yml文件,看下来更加形象。

配置文件读取:

  1.自定义属性:

my:
name: zhangsan
age: 12

  @Value(“${属性名}”)

    @Value("${my.name}")
private String name;
@Value("${my.age}")
private int age;

  2.将配置文件的属性赋给实体类:

my:
name: forezp
age: 12
number: ${random.int}
uuid : ${random.uuid}
max: ${random.int(10)}
value: ${random.value}
greeting: hi,i'm ${my.name}

${random}:生成各种不同类型的随机值

把配置文件的属性赋值给javabean

@ConfigurationProperties(prefix = "my")
@Component
public class ConfigBean { private String name;
private int age;
private int number;
private String uuid;
private int max;
private String value;
private String greeting; 省略了getter setter....

需要加注解@ConfigurationProperties,并加上它的prefix,同时bean中的属性和配置参数名保持一致

需要在应用类或者application类,加EnableConfigurationProperties注解

@RestController
@EnableConfigurationProperties({ConfigBean.class})
public class TestController {
@Autowired
ConfigBean configBean; @RequestMapping(value = "/aaa")
public String print(){
return configBean.getGreeting()+" >>>>"+configBean.getName()+" >>>>"+ configBean.getUuid()+" >>>>"+configBean.getMax();
}

  3.通过命令行设置属性值

    java -jar xxx.jar --server.port=8888

    等价于:配置文件中server.port=8888

    在命令行运行时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识

    通过SpringApplication.setAddCommandLineProperties(false)可以屏蔽命令行访问属性的设置

  4.自定义配置文件

    例如:test.properties

com.forezp.name=forezp
com.forezp.age=12

  赋值给javabean

@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.forezp")
public class User {
private String name;
private int age; get/set...
}

  5.多环境配置

  我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。

  在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如: 

  • application-dev.properties:开发环境
  • application-test.properties:测试环境
  • application-prod.properties:生产环境

  在配置文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

  1.不同环境通过命令行方式去激活不同环境的配置,如:java -jar xxx.jar --spring.profiles.active=test

  2.注解方式:

    可以在bean上使用注解@Profile("development")即调用application-development.properties|yml文件,也可以调用SpringApplication中的etAdditionalProfiles()方法。

@Profile("development")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
// app.setAdditionalProfiles("development");
app.addListeners(new MyApplicationStartedEventListener());
app.run(args);
}
}

二、springboot配置的更多相关文章

  1. SpringBoot(二) -- SpringBoot配置

    一.配置文件 SpringBoot可以使用两种类型的配置文件(文件名固定): application.properties application.yml 配置文件的作用就是来修改SpringBoot ...

  2. JAVA入门[23]-SpringBoot配置Swagger2

    一.新建SpringBoot站点 1.新建module,然后引入pom依赖: <parent> <groupId>org.springframework.boot</gr ...

  3. SpringBoot 配置 Servlet、Filter、Listener

    SpringBoot 配置 Servlet.Filter.Listener 在SpringBoot应用中,嵌入式的 Servlet 3.0+ 容器不会直接使用 ServletContainerInit ...

  4. SpringBoot配置(2) slf4j&logback

    SpringBoot配置(2) slf4j&logback 一.SpringBoot的日志使用 全局常规设置(格式.路径.级别) SpringBoot能自动适配所有的日志,而且底层使用slf4 ...

  5. SpringBoot配置(1) 配置文件application&yml

    SpringBoot配置(1) 配置文件application&yml 一.配置文件 1.1 配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的. application ...

  6. SpringBoot项目在新电脑上的配置运行,包括JDK+MAVEN+Git+SpringBoot配置等

    该教程记录了我在一台新的电脑上安装IDEA,配置JAVA+MAVEN+GIT+SpringBoot项目的过程,最终完成了项目的运行. 一.若想利用IDEA的git工具从GitHub或者码云上面获取项目 ...

  7. 使用SpringBoot配置了 server.servlet.path后无效的解决方案

    一.问题描述 使用SpringBoot配置了 server.servlet.path后无效,访问时无法通过:http://127.0.0.1:8080/app/hello.html 访问. 二.解决方 ...

  8. springboot配置logback日志

    springboot配置logback日志 java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj4f 并不是一种日志框架,它相当于定义了规范,实现了这个规范的日 ...

  9. Springcloud 中 SpringBoot 配置全集 (收藏版)

    Springcloud 中 SpringBoot 配置全集 (收藏版) 疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群 ...

  10. SpringBoot配置多数据源Mysql+Sqlite

    ​ 配置了一下druid的多数据源配置,尝试了很多方法,Spring boot关于对Mysql和Sqlite多数据源的配置,记录下来: 涉及技术点: Springboot + Druid + Mysq ...

随机推荐

  1. BZOJ 2724 蒲公英 | 分块模板题

    题意 给出一个序列,在线询问区间众数.如果众数有多个,输出最小的那个. 题解 这是一道分块模板题. 一个询问的区间的众数,可能是中间"整块"区间的众数,也可能是左右两侧零散的数中的 ...

  2. SDNnet PX Programmming Language

    写在前面 本篇是关于 SDNet PX Programming Language User Guide 其中「Introduction」 部分的一些翻译.理解以及我从其他方面看来的一些资料的整合.网上 ...

  3. Android Room使用详解

    使用Room将数据保存在本地数据库 Room提供了SQLite之上的一层抽象, 既允许流畅地访问数据库, 也充分利用了SQLite. 处理大量结构化数据的应用, 能从在本地持久化数据中极大受益. 最常 ...

  4. 【BZOJ3675】【Apio2014】序列分割

    Description 传送门 Solution ​ 之前我也遇到过一次这种"两段之和乘积作为贡献"的问题:考虑把这一种\((\sum) *(\sum)\)的形式拆括号,就可以发现 ...

  5. 域hash值破解的总结经验

    1.vsssown.vbs拷贝域数据库: 1.1上传vssown.vbs文件 上传cscript.exe和vssown.vbs到域服务器上 1.2创建快照 reg query HKEY_LOCAL_M ...

  6. 第五周linux学习笔记

    第五章 系统调用 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层.该层主要作用有三个. 它为用户空间提供了一种硬件的抽象接口. 系统调用保 证了系统的毡定和安全. 在第 3 ...

  7. gitlab相关

    1.gitlab的概述 1.gitlab是什么 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 基础功能免费,高级功能收费 2.为什么要使用gitla ...

  8. Java EE之JSTL(上)

    1.JSP标签和JSTL简介 JSP标签看起来就像普通的HTML或者XML标签一样.一个JSP标签将执行某些操作. 为了引用JSP标签必须使用正确的XML命名空间. <%@ taglib pre ...

  9. bzoj : 4504: K个串 区间修改主席树

    4504: K个串 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 268  Solved: 110[Submit][Status][Discuss] ...

  10. P1558 色板游戏

    P1558 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...