最新学习springboot 配置注解
一、概述
spring boot设计目的是用来简化新spring应用的初始搭建以及开发过程。spring boot并不是对spring功能上的增强,而是提供了一种快速使用spring的方式。
二、特性
①创建独立的spring应用程序
②嵌入的tomcat,无需部署war文件
③简化maven配置
④自动配置spring
⑤提供生产就绪型功能,如指标,健康检查和外部配置
⑥开箱即用,没有代码生成,也无需xml配置。
三、注解说明
@springbootapplication spring boot项目的核心注解,主要目的是开启自动配置;
@configuration 作用于类上,相当于一个xml配置文件,配置spring
@bean 作用于方法上,相当于xml配置中的<bean>
@componentscan 默认扫描@springbootapplication所在类的同级目录以及它的子目录。
@propertysource("classpath:env.properties") 读取外部的配置文件,通过@value注解获取值
@transactional 申明事务
四、springboot目录文件结构讲解
src/main/java:存放代码
src/main/resources
static: 存放静态文件,比如 css、js、image, (访问方式 http://localhost:8080/js/main.js)
templates: 存放静态页面jsp,html,tpl
config: 存放配置文件,application.properties
五、springboot默认加载文件的路径
/meta-inf/resources/
/resources/
/static/
/public/
springboot默认配置
spring.resources.static-locations = classpath:/meta-inf/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
六、spring boot热部署
①添加依赖
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-devtools</artifactid>
</dependency>
②compiler 勾选中左侧的build project automatically
③idea设置auto-compile,然后 shift+ctrl+alt+/,选择registry
勾选compiler.automake.allow.when.app.running
④不被热部署的文件
1、/meta-inf/maven, /meta-inf/resources, /resources, /static, /public, or /templates
2、指定文件不进行热部署 spring.devtools.restart.exclude=static/**,public/**
3、手工触发重启 spring.devtools.restart.trigger-file=trigger.txt
改代码不重启,通过一个文本去控制
七、自定义启动banner
①访问http://patorjk.com/software/taag/#p=display&h=3&v=3&f=4max&t=itcast%20spring%20boot
②拷贝生成的字符到一个文本文件中,并且将该文件命名为banner.txt
③将banner.txt拷贝到项目的resources目录中
八、全局配置文件(application.properties或application.yml)
server.port=8088
server.servlet-path=*.html
server.tomcat.uri-encoding=utf-8
logging.level.org.springframework=debug
更多点击参见官网地址
九、starter pom
spring-boot-starter 核心spring boot starter,包括自动配置支持,日志和yaml
spring-boot-starter-amqp 对高级消息队列协议的支持,通过spring-rabbit实现
spring-boot-starter-aop 对面向切面编程的支持,包括spring-aop和aspectj
spring-boot-starter-data-elasticsearch 对elasticsearch搜索擎的支持,包括spring-data-elasticsearch
spring-boot-starter-data-jpa 对java持久化api的支持,包括spring-data-jpa,spring-orm和hibernate
spring-boot-starter-jdbc 对jdbc数据库的支持
spring-boot-starter-redis 对redis键值数据存储的支持,包括spring-redis
spring-boot-starter-data-redis
spring-boot-starter-security 对spring-security的支持
spring-boot-starter-test 对常用测试依赖的支持,包括junit, hamcrest和mockito,spring-test
spring-boot-starter-velocity 对velocity模板引擎的支持
spring-boot-starter-activemq
spring-boot-starter-freemarker
spring-boot-starter-thymeleaf
spring-boot-starter-web 对全栈web开发的支持,包括tomcat和spring-webmvc
spring-boot-starter-webflux
(更多配置见百度)
十、常用json框架
(1)javabean序列化为json,性能:
jackson > fastjson > gson > json-lib
(2)jackson处理相关注解
指定字段不返回:@jsonignore
指定日期格式: @jsonformat(pattern="yyyy-mm-dd hh:mm:ss",locale="zh",timezone="gmt+8")
空字段不返回: @jsoninclude(include.non_null)
指定别名: @jsonproperty
十一、springboot使用任务调度
(1)使用步骤:
①启动类里面 @enablescheduling开启定时任务,自动扫描
②定时任务业务类 加注解 @component被容器扫描
③定时执行的方法加上注解 @scheduled(fixedrate=2000) 定期执行一次
(2)常用定时任务表达式配置和在线生成器
cron 定时任务表达式 @scheduled(cron="*/1 * * * * *") 表示每秒
1)crontab 工具 https://tool.lu/crontab/
fixedrate: 定时多久执行一次(上一次开始执行时间点后xx秒再次执行;)
fixeddelay: 上一次执行结束时间点后xx秒再次执行
fixeddelaystring: 字符串形式,可以通过配置文件指定
(3)异步定时任务
启动类里面使用@enableasync注解开启功能,自动扫描
定义异步任务类并使用@component标记组件被容器扫描,异步方法加上@async
①要把异步任务封装到类里面,不能直接写到controller
②增加future<string> 返回结果 asyncresult<string>("task执行完成");
③如果需要拿到结果 需要判断全部的 task.isdone()
十二、springboot拦截器、过滤器、监听器
(1)springboot启动默认加载的filter
characterencodingfilter
hiddenhttpmethodfilter
httpputformcontentfilter
requestcontextfilter
(2)filter优先级
ordered.highest_precedence
ordered.lowest_precedence
(3)自定义filter
1)使用servlet3.0的注解进行配置
2)启动类里面增加 @servletcomponentscan,进行扫描
3)新建一个filter类,implements filter,并实现对应的接口
4) @webfilter 标记一个类为filter,被spring进行扫描
urlpatterns:拦截规则,支持正则
6)控制chain.dofilter的方法的调用,来实现是否通过放行
不放行,web应用resp.sendredirect("/index.html");
场景:权限控制、用户登录(非前端后端分离场景)等
(4)servlet3.0的注解自定义原生listener监听器
自定义listener(常用的监听器 servletcontextlistener、httpsessionlistener、servletrequestlistener)
@weblistener
public class requestlistener implements servletrequestlistener {
@override
public void requestdestroyed(servletrequestevent sre) {
// todo auto-generated method stub
system.out.println("======requestdestroyed========");
}
@override
public void requestinitialized(servletrequestevent sre) {
system.out.println("======requestinitialized========");
}
(5)自定义拦截器
1)implements webmvcconfigurer
@configuration
public class customwebmvcconfigurer implements webmvcconfigurer {
@override
public void addinterceptors(interceptorregistry registry) {
registry.addinterceptor(new loginintercepter()).addpathpatterns("/api2/*/**");
//.excludepathpatterns("/api2/xxx/**");
webmvcconfigurer.super.addinterceptors(registry);
}
}
2)自定义拦截器 handlerinterceptor
prehandle:调用controller某个方法之前
posthandle:controller之后调用,视图渲染之前,如果控制器controller出现了异常,则不会执行此方法
aftercompletion:不管有没有异常,这个aftercompletion都会被调用,用于资源清理
3)按照注册顺序进行拦截,先注册,先被拦截
(6)对比
filter是基于函数回调 dofilter(),而interceptor则是基于aop思想
filter在只在servlet前后起作用,而interceptor够深入到方法前后、异常抛出前后等
filter依赖于servlet容器即web应用中,而interceptor不依赖于servlet容器所以可以运行在多种环境。
在接口调用的生命周期里,interceptor可以被多次调用,而filter只能在容器初始化时调用一次。
filter和interceptor的执行顺序:过滤前->拦截前->action执行->拦截后->过滤后
十三、两种部署方式jar和war
(1)jar包方式启动
添加maven插件,执行打包即可,启动命令: java -jar **.jar &
<build>
<plugins>
<plugin>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-maven-plugin</artifactid>
</plugin>
</plugins>
</build>
(2)war包方式启动
a.在pom.xml中将打包形式 jar 修改为war <packaging>war</packaging>
b.添加构建项目名称 <finalname>xdclass_springboot</finalname>
c.修改启动类
public class xdclassapplication extends springbootservletinitializer {
@override
protected springapplicationbuilder configure(springapplicationbuilder application) {
return application.sources(xdclassapplication.class);
}
public static void main(string[] args) throws exception {
springapplication.run(xdclassapplication.class, args);
}
}
d.打包项目,启动tomcat
十四、springboot多环境配置
①不同环境使用不同配置
例如数据库配置,在开发的时候,我们一般用开发数据库,而在生产环境的时候,我们是用正式的数据
②配置文件存放路径
classpath根目录的“/config”包下
classpath的根目录下
③spring boot允许通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件
---------------------
作者:带你去学习
来源:csdn
原文:https://blog.csdn.net/zhou870498/article/details/80685774
版权声明:本文为博主原创文章,转载请附上博文链接!
上一篇: 活着真好
下一篇: 夏天易长斑,哪些因素导致?
推荐阅读
-
springBoot 依赖管理 自动配置,容器功能 ,以及配置常用注解详解
-
最新学习springboot 配置注解
-
springboot配置文件、注解、自动配置原理学习笔记
-
springboot使用aop的学习--结合自定义注解校验登入
-
springboot加@EnableRedisHttpSession注解后namespace配置失效
-
springboot学习之拦截器配置
-
第二十章、SpringBoot2.x整合Mybatis3.x注解配置(SpringBoot2.x)
-
SpringBoot学习笔记42——使用log4j2.xml配置日志文件的输出及保留
-
springboot application.properties 官方配置推荐(最新版)
-
springboot学习笔记---配置信息学习内容