<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></dependency>

实在,在头部我们加了以下配置

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/></parent>

spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不须要写<version>版本号

注讲授明

@SpringBootApplication : 是Spring Boot 项目的核心表明 紧张目的是开启自动配置

在controller写一个jsp页面SpringBoot开辟案例之奇技淫巧 Angular

@SpringBootApplication表明是一个组合表明,紧张组合了@Configuration .+@EnableAutoConfiguration.+@ComponentScan

@Value : 属性注入,读取properties或者 Yml 文件中的属性

@ConfigurationProperties : 将properties属性和一个Bean及其属性关联,从而实现类型安全的配置 @ConfigurationProperties(prefix = "author",locations = {"classpath:config/author.properties"}) 通过@ConfigurationProperties加载配置,通过prefix属性指定配置前缀,通过location指定配置文件位置 @EnableAutoConfiguration 表明:浸染在于让 Spring Boot 根据运用所声明的依赖来对 Spring 框架进行自动配置

这个表明见告Spring Boot根据添加的jar依赖预测你想如何配置Spring。
由于spring-boot-starter-web添加了Tomcat和Spring MVC,以是auto-configuration将假定你正在开拓一个web运用并相应地对Spring进行设置。

@ Configuration @EnableAutoConfiguration (exclude={xxxx.class}) 禁用特定的自动配置

@SpringBootApplication 表明等价于以默认属性利用 @Configuration,@EnableAutoConfiguration和

@ComponentScan。

热支配

方法1 添加springloaded依赖

<dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.5.RELEASE</version></dependency>

事理:基于ASM实现动态天生类或者增强既有类,每次类的修正会被检测到,然后重新天生新的类并加载。
如果不懂什么是ASM可以百度JAVA-ASM。

方法2 添加spring-boot-devtools依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId></dependency>

事理:spring-boot-devtools 是一个为开拓者做事的一个模块,个中最主要的功能便是自动运用代码变动到最新的App上面去。
事理是在创造代码有变动之后,重新启动运用,但是速率比手动停滞后再启动还要更快,更快指的不是节省出来的手工操作的韶光。
其深层事理是利用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会变动的类,称为 restart ClassLoader,这样在有代码变动的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于须要加载的类比较较少,以是实现了较快的重启韶光(5秒以内)。

配置文件

在 spring boot 中,有两种办法实现文件配置,application.properties 和 application.yml。
大家可能对properties 比较熟习,而另一种yml是基于YAML实现的,YAML 是一种比JSON(json多层次{ 与 [ 会被搞晕的)更直不雅观的表现形式,展示上更易查错和关系描述。
由于不须要一个专业工具就可以排查精确性。

下面,我们以server为例展示下两者的不同。

application.properties

server.context-path=/springbootserver.port=8080server.session-timeout=60server.address=192.168.1.66server.tomcat.max-threads=300server.tomcat.uri-encoding=UTF-8

application.yml

server: context-path: /springboot port: 8080 session-timeout: 60 address: 192.168.1.66 tomcat: max-threads: 300 uri-encoding: UTF-8logging: level: root: INFO

yml天然的树状构造,一览无余,层次感强,有没有亮瞎你。
当然利用yml要把稳,层次间隔必须是空格不能是TAB,并且属性名的值和冒号中间必须有空格。

支配环境

开拓环境(development) application-dev.properties

测试环境(test) application-test.properties

生产环境(production) application-prod.properties

那么如何定义利用哪种配置文件呢?   在主配置文件application.yml中配置如下:

spring: profiles: active: dev属性配置

如何在代码中获取配置文件中的属性呢?spring-boot为我们供应了这样一种办法,只须要利用@Value表明即可。

@Value("${spring.mail.username}")public String USER_NAME;thymeleaf模版

默认配置下,thymeleaf对html的内容哀求很严格,比如,如果少末了的标签封闭符号/,就会报错而转到缺点页。

#忽略thymeleaf严格的校验spring.thymeleaf.mode=LEGACYHTML5#开拓阶段设置为false方便调试spring.devtools.livereload.enabled=truespring.thymeleaf.cache=falsespring.thymeleaf.cache-period=0spring.thymeleaf.template.cache=false静态资源

Spring Boot中静态资源(JS, 图片)等该当放在什么位置?

Spring Boot能大大简化WEB运用开拓的缘故原由, 最主要的便是遵照“约定优于配置”这一基本原则。
Spring Boot的关于静态资源的默认配置已经完备知足绝大部分WEB运用的需求。
没必要去弄手续繁杂的自定义,用Spring Boot的约定就好了。

在Maven 工程目录下,所有静态资源都放在src/main/resource目录下,构造如下:

src/main/resource |__________static |_________js |_________images |_________css .....

比如,我们引入以下css:

<link rel="stylesheet" th:href="@{css/alipay.css}" />自定义静态资源通过配置文件配置

在application.properties(或.yml)中配置

# 静态文件要求匹配办法spring.mvc.static-path-pattern=/# 修正默认的静态寻址资源目录 多个利用逗号分隔spring.resources.static-locations = classpath:/templates/,classpath:/resources/,classpath:/static/通过代码配置

@EnableAutoConfiguration@ComponentScan(basePackages = { "com.itstyle.modules" })public class Application extends WebMvcConfigurerAdapter { private static final Logger logger = Logger.getLogger(Application.class); @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/cert/").addResourceLocations( "classpath:/cert/"); super.addResourceHandlers(registry); logger.info("自定义静态资源目录"); } public static void main(String[] args) throws InterruptedException, IOException { SpringApplication.run(Application.class, args); logger.info("支付项目启动 "); }}文件操作获取文件

File file = ResourceUtils.getFile("classpath:cert/readme.txt");获取路径

ClassUtils.getDefaultClassLoader().getResource("cert").getPath()Controller和RestController的差异?

官方文档: @RestController is a stereotype annotation that combines @ResponseBody and @Controller. 意思是: @RestController表明相称于@ResponseBody + @Controller合在一起的浸染。

1)如果只是利用@RestController表明Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起浸染,返回的内容便是Return 里的内容。
例如:本来该当到success.jsp页面的,则其显示success.

2)如果须要返回到指定页面,则须要用 @Controller合营视图解析器InternalResourceViewResolver才行。
3)如果须要返回JSON,XML或自定义mediaType内容到页面,则须要在对应的方法上加上@ResponseBody表明。

支配到JavaEE容器

修正启动类,继续 SpringBootServletInitializer 并重写 configure 方法

public class Application extends SpringBootServletInitializer{ private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class); @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(this.getClass()); }}

修正pom文件中jar 为 war

<!-- <packaging>jar</packaging> --><packaging>war</packaging>

修正pom,打消tomcat插件

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions></dependency>

末了,打包支配到容器。

打包打消

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <excludes> <exclude>/static/</exclude> <exclude>/templates/</exclude> </excludes> </configuration></plugin>指定外部的配置文件

有些系统,关于一些数据库或其他第三方账户等信息,由于安全问题,其配置并不会提前配置在项目中暴露给开拓职员。
对付这种情形,我们在运行程序的时候,可以通过参数指定一个外部配置文件。
以 itstyle.jar 为例,方法如下:

java -jar itstyle.jar --spring.config.location=/opt/config/application.properties

完毕!


给个关注,转发

作者:阿里如斯栖号

spring data jpa 高等运用

Spring MVC 异步要求办法

Spring Cloud Sentinel 流控限流

SpringMVC参数统一验证方法

Spring Cloud Sentinel整合Feign

SpringBoot多数据源配置详解

SpringBoot 分库分表sharding-sphere

Springboot Security 根本运用 (1)

SpringBoot开拓自己的Starter

SpringBoot开拓自己的@Enable功能

SpringBoot中利用Cache及JSR107的利用

SpringBoot2 整合OAuth2实现统一认证