文章目录

  • 搭建Spring Boot开发环境
    • 使用Spring Tool Suit 构建
    • 使用 IntelliJ IDEA来构建
  • Spring Boot配置
    • 入口类的main方法和@SpringBootApplication注解
    • 全局配置文件application.properties或者application.yml
    • 使用@ImportResource加载xml
  • 属性配置
    • 常规属性配置
    • 基于properties的类型安全的配置
  • 开发、测试、生产环境配置通过Profile来区分
    • 配置
    • 在application.properties中指定使用的文件
  • 代码

搭建Spring Boot开发环境

搭建方式有很多种,这里不一一列出了,仅列出如下两种常用的方式。

使用Spring Tool Suit 构建

Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01

Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目02


使用 IntelliJ IDEA来构建

版本: IntelliJ IDEA 2018.2.5 Ultimate 版本 商用版本

Spring Boot 2.0.6

跟随提示,一步步的操作即可 ,依赖的话,初次构建只要选择Web即可满足。


如果没有Spring Initializr ,需要安装插件

操作:setting—>plugins—>搜索Spring boot—>勾选安装Spring boot插件,重启IDEA。


Spring Boot配置

入口类的main方法和@SpringBootApplication注解

在自动生成的工程里面,我们来看下应用启动的入口类,类的名称取决于你的工程的名称,比如这里我的是SpringbootmasterApplication

package com.artisan.springbootmaster;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringbootmasterApplication {public static void main(String[] args) {SpringApplication.run(SpringbootmasterApplication.class, args);}
}

看下@SpringBootApplication注解

  • @SpringBootConfiguration继承自@Configuration,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,Bean的实例名就是方法名。

  • @EnableAutoConfiguration 自动配置,依赖AutoConfigurationImportSelector。具体的细节以后再说。


全局配置文件application.properties或者application.yml

Spring Boot 不仅支持常规的Properties配置文件,还支持yaml语言的配置文件。 这里我们用Properties作为配置文件。

我们以修改端口为例子,讲Tomcat默认的8080 改为8088端口启动。

application.properties 增加

server.port=8088

可配置的属性server开头的属性见 org.springframework.boot.autoconfigure.web.ServerProperties

启动验证

如果使用application.yml配置,如下

server:port: 8080

结果是相同的。


使用@ImportResource加载xml

虽然Spring boot提倡使用Java注解的方式来实现零配置的应用开发,但是并不代表不支持加载xml配置。

Spring提供了@ImportResource来加载xml文件。

用法也是很简单,这里就不贴例子了。


属性配置

常规属性配置

在Spring Boot 中,只需要在application.properties中定义属性,直接使用@Value注入即可

示例:
在application.properties增加两个属性

artisan.name=spring boot
artisan.age=99

获取

package com.artisan.springbootmaster.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;@RestController
public class ArtisanController {@Value("${artisan.name}")private String name;@Value("${artisan.age}")private int age;@GetMapping("/loadPropertiesValue")public String loadPropertiesValue(){return "artisan name:【" + name + "】 , age:【" + age  + "】";}}

访问:http://localhost:8080/loadPropertiesValue


基于properties的类型安全的配置

上述这种方式,如果属性很多,需要一个个的使用@Value注入,显得十分的麻烦。 Spring Boot提供了基于类型安全的配置方式,可以使用@ConfigurationProperties将Properties的属性和一个Bean及其属性关联,从而实现类型安全的配置

示例:

假设有个配置文件 artisan.properties

xxx.name=artisan_self
xxx.age=23

配置类

package com.artisan.springbootmaster.conf;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "xxx")
@PropertySource(value = "classpath:artisan.properties")
public class ArtisanConfig {private String name;private int age ;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

prefix 要和 配置文件的前缀保持一致。 属性名称也要和配置文件中的一致, 否则获取不到该值。

如果需要指定特定位置的配置文件,可以使用@PropertySource注解。旧版本@ConfigurationProperties中的locations已经被废弃了。

同时,不要忘记给该类加上@Component,使其成为Spring管理的bean


使用: 直接 @Autowired注入该类即可获取

package com.artisan.springbootmaster.controller;import com.artisan.springbootmaster.conf.ArtisanConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;@RestController
public class ArtisanConfigLoadTest {@Autowiredprivate ArtisanConfig artisanConfig;@GetMapping("/loadSelfConfigProperties")public Map<String,Object> loadConf(){Map<String,Object> map = new HashMap<>();map.put("name",artisanConfig.getName());map.put("value", artisanConfig.getAge());return map;}
}

启动测试:


开发、测试、生产环境配置通过Profile来区分

Profile是Spring对不同环境提供不同配置功能的支持,可以通过指定参数等方式快速切换环境。默认使用application.properties配置文件

格式

application-{profile}.properties

配置

简单起见,我们仅仅指定端口

application-dev.properties

server.port=8888

application-test.properties

server.port=9999

application-prod.properties

server.port=80

在application.properties中指定使用的文件

这里我们指定prod ,即启动80端口

#spring.profiles.active=dev
#spring.profiles.active=test
spring.profiles.active=prod

观察日志:


代码

https://github.com/yangshangwei/springbootmaster

Spring Boot2.x-03Spring Boot基础相关推荐

  1. Spring Boot2.x-05Spring Boot基础-使用注解完成依赖注入

    文章目录 概述 @Autowired注解 @Autowired的匹配原则 @Autowired的 required 属性 使用@Primary 和@Qualifier消除@Autowired的歧义 @ ...

  2. 搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统

    搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统 场景 可行性分析 搭建Spring Boot集成 ...

  3. Spring Boot2.x-10 基于Spring Boot 2.1.2 + Mybatis 2.0.0实现多数据源,支持事务

    文章目录 概述 思路 步骤 Step1 多数据源配置文件applicaiton.yml Step2 初始化多个数据源 Step3 配置多个数据源 验证测试 支持事务 Step1 配置类中通过@Bean ...

  4. Spring Boot2.x-09 基于Spring Boot 2.1.2 + Mybatis使用自定义注解实现数据库切换

    文章目录 概述 场景说明:读写分离 操作步骤 工程结构 Step1 自定义注解 Step2 数据源定义 Step3 配置文件配置数据源 Step4 数据源实例化DatasourceConfig Ste ...

  5. 2021 版 Spring Boot 基础知识复习手册(2w字,建议收藏)

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...

  6. spring cloud入门_Spring Boot 2.x基础教程:快速入门

    简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...

  7. Spring Boot基础

    Spring Boot基础   一.Spring Boot概述 1.什么是Spring Boot? 采用"习惯优于配置"的理念让项目快速运行起来. 2.Spring Boot核心功 ...

  8. spring boot @value_spring+vue全栈开发实战-第二章Spring Boot 基础配置-笔记0302-2020

    Spring Boot 基础配置 1. Web 容器配置 2.Properties 配置 3.类型安全配置属性 1. Web 容器配置 a.常规配置 在 Spring Boot 项 目 中,可以内置 ...

  9. Spring Boot 基础教程:集成 Knife4j

    前言 之前介绍了如何在 Spring Boot 中集成 Swagger2 和 Swagger3,对于我们日常的接口管理已经够用了.但是作为一个颜值党,无论是 Swagger2 还是 Swagger3, ...

  10. Spring Boot2.x-11 使用@ControllerAdvice和@ExceptionHandler实现自定义全局异常

    文章目录 概述 未使用全局异常且未显式捕获异常的情况 使用全局异常 Step1. 自定义异常类 Step2. 封装异常信息模板 Step3. 全局异常处理类 Step4. 使用全局异常 小结 概述 我 ...

最新文章

  1. Linux 性能监测工具总结
  2. flask之url_for()函数解析
  3. expect to check grammarly intime
  4. Java使用ojdbc连接Oracle数据库时不能使用服务名连接的问题
  5. java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException 的解决办法
  6. 小程序动画从头开始_渐进式Web应用程序102:从头开始构建渐进式Web应用程序
  7. 计算机中i o接口,计算机组成原理 输入输出(I/O)I/O 接口(I/O 控制器)
  8. Java数据结构——队列
  9. SQLite:在Julia中判断一个表是否存在数据库中?
  10. 独角兽影视APP系统源码/双端影视APP源码
  11. 【外贸建站规则】外贸网站建站流程有哪些?需要注意什么? (上)
  12. 如何用卡诺图化简带有约束条件的逻辑函数?
  13. Execution failed for task ':app:processDebugResources'. No slave process to process jobs, aborting
  14. 【老生谈算法】matlab实现模糊K-均值算法——均值算法
  15. 美联储3月议息会议:表面风平浪静,下面暗流涌动
  16. 小眼睛适合大框还是小框眼镜_【图】小眼睛适合什么眼镜框 这个禁忌千万不要犯_小眼睛_伊秀服饰网|yxlady.com...
  17. 计算机防火墙无法关闭,为什么我电脑的防火墙关不了(win7电脑防火墙怎么关)
  18. 知识图谱中有哪些核心概念?
  19. 计算机网络量化噪音是怎么消除的,数字图像噪声消除算法研究(可编辑).doc
  20. python 调用qrcode库实现二维码识别

热门文章

  1. python 程序开机自启动,亲测可用
  2. 字典的最大深度 python 实现
  3. input自适应_一种Dynamic ReLU:自适应参数化ReLU(调参记录26)Cifar10~95.92%
  4. Leetcode 144. 二叉树的前序遍历 (每日一题 20210820)
  5. 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
  6. 文巾解题 881. 救生艇
  7. 李宏毅线性代数笔记13:SVD分解
  8. python程序多次运行_[Python]在一段Python程序中使用多次事件循环
  9. Youtube推荐系统是如何挖掘用户内心另一面的
  10. 【机器学习算法-python实现】svm支持向量机(3)—核函数