SpringBoot
2022-06-14 21:34:09 1 举报
AI智能生成
springboot框架学习
作者其他创作
大纲/内容
什么是springboot
springboot内嵌了tomcat
springboot与spring的区别
springboot开发程序基本操作
创建项目的几种方式
主应用类分析
main方法的几种写法
如果main类上不使用@SpringBootApplication注解,可以使用@EnableAutoConfiguration、@ComponentScan、@Configuration 注解代替
主应用类也是一个配置类,是ioc容器中的一个bean。SpringBoot不推荐使用xml配置方式。
主应用类启动后,也就是spring容器启动后,
如果需要执行一些动作,有三种方式
如果需要执行一些动作,有三种方式
方式1.新建一个类实现ApplicationListener<ContextRefreshedEvent>,并重写onApplicationEvent方法
方式2.在主运行类实现ApplicationRunner,并重写run方法
方式3.在主运行类实现CommandLineRunner,并重写run方法
修改pom文件中依赖的默认版本
往spring ioc容器中导入Bean的几种方式
通过@Import导入bean对象
通过@Configuration + @Bean
@Configuration + @ComponentScan
通过@ImportResource(locations = "classpath:applicationContext.xml")加入xml配置的bean对象
springboot配置文件
配置文件有三种方式
application.properties / application.yml / application.yaml
多环境配置文件
1.application-dev.yml / application-test.yml / application-prod.yml
2.通过spring.profiles.active=dev 来指定哪个环境的配置文件生效
敏感配置信息加密
第一步:添加依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
第二步:加解密测试
1.注入StringEncryptor
2. stringEncryptor.encrypt()
stringEncryptor.decrypt()
stringEncryptor.decrypt()
第三步:在配置文件中,数据源的用户名和密码的配置项前,可加上 ENC(xxx) ,其中xxx为加密后的用户名或密码
配置文件随机值生成
${random.value} / ${random.int} / ${random.uuid} 等等等等
读取配置文件的四种方式
方式一:@Value
方式二:@ConfigurationProperties + @Component
方式三:通过Environment对象读取,注入 Environment 即可
方式四:通过嵌套静态内部类读取(参考springboot源码里面的 server.port 以及 server.servlet.context-path等等)
静态资源处理
Spring Boot默认静态资源目录位置位于classpath下
有4个目录下的静态资源可以直接访问:
/static
/public
/resources
/META-INF/resources
/static
/public
/resources
/META-INF/resources
如果想修改静态资源的存放路径,可通过spring.resources.static-locations=classpath:/mysource/
打包部署
打war包
1.主程序入口类需继承SpringBootServletInitializer类
2.覆盖如下方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringbootApplication.class);
}
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringbootApplication.class);
}
3.修改pom.xml中<packaging>标签内的值为war
4.配置打包插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
5.配置打包插件时注意是否要把某些资源文件也打进去,例如
<resource>
<!--源文件位置-->
<directory>src/main/java</directory>
<includes>
<!--要把哪些文件编译过去.*.*表示所有-->
<include>**/*.xml</include>
</includes>
</resource>
<!--源文件位置-->
<directory>src/main/java</directory>
<includes>
<!--要把哪些文件编译过去.*.*表示所有-->
<include>**/*.xml</include>
</includes>
</resource>
打jar包
1.修改pom.xml中<packaging>标签内的值为jar
2.配置打包插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
SpringBoot线程池异步调用
方式一:采用@Async (底层是aop)+ @EnableAsync,并可在配置文件中配置线程池的一些参数
方式二:可以自定义线程池,覆盖SpringBoot自动配置的线程池
SpringBoot跨域资源共享CORS支持
1.传统的Ajax请求只能获取在同一个域名下的资源,但是HTML5规范中打破了这种限制,允许Ajax发起跨域的请求;
2.浏览器本身是可以发起跨域请求的,比如你可以链接一个外域的图片或者脚本,但是javascript脚本是不能获取这些外域资源内容的;
3.CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制;
4.SpringBoot解决跨域问题,只需要配置如下代码即可:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/web/**");
registry.addMapping("/boot/**");
}
};
}
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/web/**");
registry.addMapping("/boot/**");
}
};
}
SpringBoot整合Mybatis
SpringBoot使用JSP展示数据
也支持一些模板技术,比如freemaker、velocity
SpringBoot集成Swagger
集成步骤
1.添加swagger依赖
2.新增SwaggerConfig配置类,往spring ioc容器中注入一个Docket的Bean对象
3.在Controller层的接口上添加方法的注解,以及在model层上添加类的注解
安全性考虑
swagger安全性考虑,正式上线 的时候,建议关闭swagger
关闭swagger的方式一:在配置文件中增加swagger的开关,并在SwaggerConfig中的Docket的链式编程中添加这个开关
关闭swagger的方式二:用@Profiles注解,将@Profile("!prod") 放到SwaggerConfig配置类的上面
swagger UI增强版
swagger-bootstrap-ui,支持导出api文档
SpringBoot集成websocket
什么是websocket
1.WebSocket协议基于TCP协议实现
2.WebSocket协议是一种长连接
3.全双工通信
4.协议标识符是ws,服务器地址是:ws://www.abc.com/some/path
WebSocket应用场景
聊天室、股票价格实时显示、电影票在线选座、用户上下线提醒、二维码支付、弹幕等等
WebSocket在java中服务端的实现
方式一:Tomcat,需要tomcat7以上才支持JavaEE7
方式二:Spring的websocket,需要Spring 4.x
注册Servlet、Filter、Listener作为Spring Beans
@WebServlet / @WebFilter / @WebListener
配置上述三个注解的同时,
需要在主应用类上加上@ServletComponentScan(basePackage="xxx")
需要在主应用类上加上@ServletComponentScan(basePackage="xxx")
还要往Spring容器中注入Bean---> ServletRegistrationBean
SpringBoot使用拦截器
写一个配置类实现WebMvcConfigurer接口,覆盖其中的addInterceptors方法,并添加已经编写好的拦截器
修改SpringBoot内嵌的服务器
1.SpringBoot默认使用tomcat作为内嵌的Servlet容器运行web程序,我们也可以将Servlet容器切换为其他服务器,比如Undertow、Jetty
2.配置方式
1.先排除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>
<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>
2.再添加undertow或jetty的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
SpringBoot配置SSL
SpringBoot支持配置https具体步骤
1.生成证书
1.利用JDK工具生成证书:keytool.exe
2.利用OpenSSL工具生成证书(在linux系统上操作)
证书的类型有两种:jks 、pkcs12
2.配置或编写代码
在application.yml中配置
#配置https的证书
server.ssl.key-store=classpath:tomcat.pkcs12
#证书的密码(在生成证书的时候会指定一个密码)
server.ssl.key-store-password=123456
#执行证书的类型
server.ssl.key-store-type=pkcs12
server.ssl.key-store=classpath:tomcat.pkcs12
#证书的密码(在生成证书的时候会指定一个密码)
server.ssl.key-store-password=123456
#执行证书的类型
server.ssl.key-store-type=pkcs12
编写代码:写一个配置类,创建HTTPS连接器,并配置一个Bean
可实现SpringBoot同时支持http和https,并可实现访问http时自动跳转到https
SpringBoot全局异常处理
定义一个类,GlobalResponseHandler implements ResponseBodyAdvice<Object>, RequestBodyAdvice
并在这个类上加上注解: @ControllerAdvice(annotations = {Controller.class, RestController.class})
0 条评论
下一页