springboot@value启动报错_SpringBoot开发案例之奇技淫巧
版本标注
⼩伙伴们可能会发现l中很多是没有版本号的⽐如:
org.springframework.boot spring-boot-starter
其实,在头部我们加了以下配置:
org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE
spring-boot-starter-parent包含了⼤量配置好的依赖管理,在⾃⼰项⽬添加这些依赖的时候不需要写版本号
注解说明
@SpringBootApplication : 是Spring Boot 项⽬的核⼼注解 主要⽬的是开启⾃动配置
@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将假定你@ Configuration @EnableAutoConfiguration (exclude={xxxx.class}) 禁⽤特定的⾃动配置
@SpringBootApplication 注解等价于以默认属性使⽤ @Configuration,@EnableAutoConfiguration和
@ComponentScan。
热部署
⽅法1 添加springloaded依赖
org.springframework springloaded 1.2.5.RELEASE
原理:基于ASM实现动态⽣成类或者增强既有类,每次类的修改会被检测到,然后重新⽣成新的类并加载。如果不懂什么是ASM可以百度
JAVA-ASM。
⽅法2 添加spring-boot-devtools依赖
org.springframework.boot spring-boot-devtools
原理:spring-boot-devtools 是⼀个为开发者服务的⼀个模块,其中最重要的功能就是⾃动应⽤代码更改到最新的App上⾯去。原理是在
发现代码有更改之后,重新启动应⽤,但是速度⽐⼿动停⽌后再启动还要更快,更快指的不是节省出来的⼿⼯操作的时间。其深层原理是使
⽤了两个ClassLoader,⼀个Classloader加载那些不会改变的类(第三⽅Jar包),另⼀个ClassLoader加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建⼀个restart ClassLoader,由于需要加载的类相
⽐较少,所以实现了较快的重启时间(5秒以内)。
配置⽂件
在 spring boot 中,有两种⽅式实现⽂件配置,application.properties 和 l。⼤家可能对properties ⽐较熟悉,⽽另⼀种
yml是基于YAML实现的,YAML 是⼀种⽐JSON(json多层次{ 与 [ 会被搞晕的)更直观的表现形式,展⽰上更易查错和关系描述。因为不
需要⼀个专业⼯具就可以排查正确性。
下⾯,我们以server为例展⽰下两者的不同。
application.properties
server: context-path: /springboot port: 8080 session-timeout: 60 address: 192.168.1.66 tomcat: max-threads: 300 uri-encoding: UTF-8logg
yml天然的树状结构,⼀⽬了然,层次感强,有没有亮瞎你。当然使⽤yml要注意,层次间隔必须是空格不能是TAB,并且属性名的值和冒
号中间必须有空格。
部署环境
开发环境(development) application-dev.properties
测试环境(test) application-test.properties
⽣产环境(production) application-prod.properties
那么如何定义使⽤哪种配置⽂件呢? 在主配置⽂件l中配置如下:
spring: profiles: active: dev
属性配置
如何在代码中获取配置⽂件中的属性呢?spring-boot为我们提供了这样⼀种⽅式,只需要使⽤@Value注解即可。
@Value("${spring.mail.username}")public String USER_NAME;
thymeleaf模版
默认配置下,thymeleaf对html的内容要求很严格,⽐如,如果少最后的标签封闭符号/,就会报错⽽转到错误页。
#忽略thymeleaf严格的校验de=LEGACYHTML5#开发阶段设置为false⽅便调试spring.abled=truespring.thymeleaf.cache=静态资源
Spring Boot中静态资源(JS, 图⽚)等应该放在什么位置?
Spring Boot能⼤⼤简化WEB应⽤开发的原因, 最重要的就是遵循“约定优于配置”这⼀基本原则。Spring Boot的关于静态资源的默认
配置已经完全满⾜绝⼤部分WEB应⽤的需求。没必要去弄⼿续繁杂的⾃定义,⽤Spring Boot的约定就好了。
在Maven ⼯程⽬录下,所有静态资源都放在src/main/resource⽬录下,结构如下:
src/main/resource |__________static |_________js |_________images |_________css .....
⽐如,我们引⼊以下css:
⾃定义静态资源
通过配置⽂件配置
在application.properties(或.yml)中配置
# 静态⽂件请求匹配⽅式spring.mvc.static-path-pattern=/**# 修改默认的静态寻址资源⽬录多个使⽤逗号分隔sources.static-locations = classpath:/templates 通过代码配置
@EnableAutoConfiguration@ComponentScan(basePackages = { "dules" })public class Application extends WebMvcConfigurerAdapter { p
⽂件操作
获取⽂件
File file = File("classpath:");
获取路径
Controller和RestController的区别?
官⽅⽂档: @RestController is a stereotype annotation that combines @ResponseBody and @Controller. 意思是:
@RestController注解相当于@ResponseBody + @Controller合在⼀起的作⽤。
1)如果只是使⽤@RestController注解Controller,则Controller中的⽅法⽆法返回jsp页⾯,配置的视图解析器
InternalResourceViewResolver不起作⽤,返回的内容就是Return ⾥的内容。 例如:本来应该到succ
ess.jsp页⾯的,则其显⽰
success.
2)如果需要返回到指定页⾯,则需要⽤ @Controller配合视图解析器InternalResourceViewResolver才⾏。 3)如果需要返回
JSON,XML或⾃定义mediaType内容到页⾯,则需要在对应的⽅法上加上@ResponseBody注解。
部署到JavaEE容器
修改启动类,继承 SpringBootServletInitializer 并重写 configure ⽅法
public class Application extends SpringBootServletInitializer{ private static final Logger logger = Logger(SpringBootSampleApplication.
修改pom⽂件中jar 为 war
war
修改pom,排除tomcat插件
springboot结构org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat
最后,打包部署到容器。
打包排除
org.apache.maven.plugins maven-jar-plugin **/static/****/templates/**
指定外部的配置⽂件
有些系统,关于⼀些数据库或其他第三⽅账户等信息,由于安全问题,其配置并不会提前配置在项⽬中暴露给开发⼈员。 对于这种情况,我们在运⾏程序的时候,可以通过参数指定⼀个外部配置⽂件。 以 itstyle.jar 为例,⽅法如下:
java -jar itstyle.jar --fig.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实现统⼀认证
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论