Spring Boot2.x-03Spring Boot基础
文章目录
- 搭建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基础相关推荐
- Spring Boot2.x-05Spring Boot基础-使用注解完成依赖注入
文章目录 概述 @Autowired注解 @Autowired的匹配原则 @Autowired的 required 属性 使用@Primary 和@Qualifier消除@Autowired的歧义 @ ...
- 搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统
搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统 场景 可行性分析 搭建Spring Boot集成 ...
- Spring Boot2.x-10 基于Spring Boot 2.1.2 + Mybatis 2.0.0实现多数据源,支持事务
文章目录 概述 思路 步骤 Step1 多数据源配置文件applicaiton.yml Step2 初始化多个数据源 Step3 配置多个数据源 验证测试 支持事务 Step1 配置类中通过@Bean ...
- Spring Boot2.x-09 基于Spring Boot 2.1.2 + Mybatis使用自定义注解实现数据库切换
文章目录 概述 场景说明:读写分离 操作步骤 工程结构 Step1 自定义注解 Step2 数据源定义 Step3 配置文件配置数据源 Step4 数据源实例化DatasourceConfig Ste ...
- 2021 版 Spring Boot 基础知识复习手册(2w字,建议收藏)
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...
- spring cloud入门_Spring Boot 2.x基础教程:快速入门
简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...
- Spring Boot基础
Spring Boot基础 一.Spring Boot概述 1.什么是Spring Boot? 采用"习惯优于配置"的理念让项目快速运行起来. 2.Spring Boot核心功 ...
- spring boot @value_spring+vue全栈开发实战-第二章Spring Boot 基础配置-笔记0302-2020
Spring Boot 基础配置 1. Web 容器配置 2.Properties 配置 3.类型安全配置属性 1. Web 容器配置 a.常规配置 在 Spring Boot 项 目 中,可以内置 ...
- Spring Boot 基础教程:集成 Knife4j
前言 之前介绍了如何在 Spring Boot 中集成 Swagger2 和 Swagger3,对于我们日常的接口管理已经够用了.但是作为一个颜值党,无论是 Swagger2 还是 Swagger3, ...
- Spring Boot2.x-11 使用@ControllerAdvice和@ExceptionHandler实现自定义全局异常
文章目录 概述 未使用全局异常且未显式捕获异常的情况 使用全局异常 Step1. 自定义异常类 Step2. 封装异常信息模板 Step3. 全局异常处理类 Step4. 使用全局异常 小结 概述 我 ...
最新文章
- Linux 性能监测工具总结
- flask之url_for()函数解析
- expect to check grammarly intime
- Java使用ojdbc连接Oracle数据库时不能使用服务名连接的问题
- java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException 的解决办法
- 小程序动画从头开始_渐进式Web应用程序102:从头开始构建渐进式Web应用程序
- 计算机中i o接口,计算机组成原理 输入输出(I/O)I/O 接口(I/O 控制器)
- Java数据结构——队列
- SQLite:在Julia中判断一个表是否存在数据库中?
- 独角兽影视APP系统源码/双端影视APP源码
- 【外贸建站规则】外贸网站建站流程有哪些?需要注意什么? (上)
- 如何用卡诺图化简带有约束条件的逻辑函数?
- Execution failed for task ':app:processDebugResources'. No slave process to process jobs, aborting
- 【老生谈算法】matlab实现模糊K-均值算法——均值算法
- 美联储3月议息会议:表面风平浪静,下面暗流涌动
- 小眼睛适合大框还是小框眼镜_【图】小眼睛适合什么眼镜框 这个禁忌千万不要犯_小眼睛_伊秀服饰网|yxlady.com...
- 计算机防火墙无法关闭,为什么我电脑的防火墙关不了(win7电脑防火墙怎么关)
- 知识图谱中有哪些核心概念?
- 计算机网络量化噪音是怎么消除的,数字图像噪声消除算法研究(可编辑).doc
- python 调用qrcode库实现二维码识别
热门文章
- python 程序开机自启动,亲测可用
- 字典的最大深度 python 实现
- input自适应_一种Dynamic ReLU:自适应参数化ReLU(调参记录26)Cifar10~95.92%
- Leetcode 144. 二叉树的前序遍历 (每日一题 20210820)
- 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
- 文巾解题 881. 救生艇
- 李宏毅线性代数笔记13:SVD分解
- python程序多次运行_[Python]在一段Python程序中使用多次事件循环
- Youtube推荐系统是如何挖掘用户内心另一面的
- 【机器学习算法-python实现】svm支持向量机(3)—核函数