- SpringBoot的父级依赖
1)创建父级工程pom.xml
- 在父级工程里创建子module,pom.xml如下 - SpringBoot_Parent - com.carry - 1.0-SNAPSHOT - 4.0.0 - SpringBoot_Child1 - org.springframework.boot - spring-boot-starter-web 
22. 访问静态资源:
在SpringBoot中加载静态资源和在普通的web应用中不太一样。默认情况下,Spring Boot从classpath的/static,/public 或/META-INF/resources文件夹或从ServletContext根目录提供静态内容
#设定静态文件路径,js,css,image等
spring.resources.static-locations=classpath:/static/
23. 自定义消息转化器
只需要在类中添加消息转化器的@Bean,就会被Spring Boot自动加入到容器中。
// SpringBoot默认配置了消息转换器// 定义消息转换器@Beanpublic StringHttpMessageConverter stringHttpMessageConverter() {    StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("ISO8859-1"));    return converter;}
24. 使用FastJson解析Json数据:
SpringBoot默认配置的是Jackson。
使用FastJson解析Json数据:
<!-- fastjson的依赖 --><dependency>        <groupId>com.alibaba</groupId>        <artifactId>fastjson</artifactId>        <version>1.2.46</version>    </dependency>
配置FastJson有两种方式:
第一种:让启动类继承WebMvcConfigurerAdapter
public class SpringApplications extends WebMvcConfigurerAdapter{@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {   // 创建FastJson的消息转换器    FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();    // 创建FastJson的配置对象    FastJsonConfig config = new FastJsonConfig();    // 对Json数据进行格式化    config.setSerializerFeatures(SerializerFeature.PrettyFormat);    converter.setFastJsonConfig(config);    converters.add(converter);}}
乱码解决:
把springboot的reponse编码设置为utf-8这个功能开启就好了
spring.http.encoding.force=true
注意:FastJson可以对日期进行格式化,可使用如下注解
@JSONField(format = "yyyy-MM-dd HH")
private Date date;
第二种:@Bean注入
在启动类中添加如下代码
@Beanpublic HttpMessageConverters fastJsonMessageConverter() {    // 创建FastJson的消息转换器    FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();    // 创建FastJson的配置对象    FastJsonConfig config = new FastJsonConfig();    // 对Json数据进行格式化    config.setSerializerFeatures(SerializerFeature.PrettyFormat);    converter.setFastJsonConfig(config);    HttpMessageConverter<?> con = converter;    return new HttpMessageConverters(con);}
25. 自定义拦截器:
有些时候我们需要自己配置SpringMVC而不是采用默认,比如说增加一个拦截器,这个时候就得通过继承WebMvcConfigurerAdapter然后重写父类中的方法进行扩展。
注意:需要在启动类中定义扫描该文件
@Configuration // 声明这是一个配置 public class MyInterceptor extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {    HandlerInterceptor interceptor = new HandlerInterceptor() {        @Override        public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {            System.out.println("自定义拦截器......");            return true;        }        @Override        public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {        }        @Override        public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {        }    };    registry.addInterceptor(interceptor).addPathPatterns("/**");}}
26. 定义全局异常处理器:
创建一个全局异常处理类,如下:
// 全局异常处理器@ControllerAdvicepublic class GlobalExceptionHandler {@ExceptionHandler(Exception.class)@ResponseBodypublic Map<String, Object> allExceptionHandler(Exception exception) throws Exception {    Map<String, Object> map = new HashMap<String, Object>();    map.put("errorCode", 500);    map.put("errorMsg", exception.toString());    return map;}}
27. 异步调用:
在项目中,当访问其他接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行,我们可以使用多线程来并行的处理任务,SpringBoot提供了异步处理方式@Async.
注意:需要在启动类添加@EnableAsync //开启异步调用
@Servicepublic class AsyncServiceImpl implements AsyncService {private static Random random = new Random();@Async@Overridepublic Future<String> doTask1() throws Exception {    System.out.println("任务一开始执行");    long start = System.currentTimeMillis();    Thread.sleep(random.nextInt(10000));    long end = System.currentTimeMillis();    System.out.println("任务一结束,耗时:" + (end -start) + "毫秒");    return new AsyncResult<>("任务一结束");}@Async@Overridepublic Future<String> doTask2() throws Exception {    System.out.println("任务二开始执行");    long start = System.currentTimeMillis();    Thread.sleep(random.nextInt(10000));    long end = System.currentTimeMillis();    System.out.println("任务二结束,耗时:" + (end -start) + "毫秒");    return new AsyncResult<>("任务二结束");}@Async@Overridepublic Future<String> doTask3() throws Exception {    System.out.println("任务三开始执行");    long start = System.currentTimeMillis();    Thread.sleep(random.nextInt(10000));    long end = System.currentTimeMillis();    System.out.println("任务三结束,耗时:" + (end -start) + "毫秒");    return new AsyncResult<>("任务三结束");}}
28. SpringBoot整合JSP
- pom文件中添加如下代码:注意需要使用spring-boot-starter-parent的版本为1.4.0及以上版本 - 4.0.0 - com.fengyao - SpringBoot_Jsp - 1.0-SNAPSHOT - jar - org.springframework.boot - spring-boot-starter-parent - 1.4.0.RELEASE - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> - org.springframework.boot - spring-boot-starter-web - org.springframework.boot - spring-boot-starter-tomcat - provided - org.apache.tomcat.embed - tomcat-embed-jasper - org.springframework.boot - spring-boot-starter-test - test - org.springframework.boot - spring-boot-maven-plugin 
2)需要在application.properties中添加如下代码:
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
3)在main目录下新建webapp文件夹,然后新建jsp的存储目录
4)启动类文件如下:
@SpringBootApplicationpublic class SpringApp extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {    return builder.sources(SpringApp.class);}public static void main(String[] args) {    SpringApplication.run(SpringApp.class, args);}}
29. SpringBoot整合Freemarker:
1)在pom.xml文件中添加如下依赖
<!-- springboot不建议使用jsp,使用模板引擎,比如themleaf,velocity,freemarker    整合freemarker -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-freemarker</artifactId>    </dependency>
2)在main文件夹下创建webapp/templates/show.ftl文件
3)在application.properties下面添加如下配置:
#springboot整合freemarker
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=utf-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/templates
30. SpringBoot整合Thymeleaf:
1)在pom.xml文件中添加如下依赖
 <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-thymeleaf</artifactId>    </dependency>    <dependency>        <groupId>net.sourceforge.nekohtml</groupId>        <artifactId>nekohtml</artifactId>        <version>1.9.22</version>    </dependency>
2)在main文件夹下创建webapp/templates/tests.html文件
3)在application.properties下面添加如下配置:
#springboot整合thymeleaf
#
spring.thymeleaf.cache=false
## 检查模板是否存在,然后再呈现
spring.thymeleaf.check-template-location=true
# Content-Type值
spring.thymeleaf.content-type=text/html
# 启用MVC Thymeleaf视图分辨率
spring.thymeleaf.enabled=true
## 应该从解决方案中排除的视图名称的逗号分隔列表
spring.thymeleaf.excluded-view-names=
# 模板编码
spring.thymeleaf.mode=LEGACYHTML5
# 在构建URL时预先查看名称的前缀
spring.thymeleaf.prefix=classpath:/templates/
# 构建URL时附加查看名称的后缀
spring.thymeleaf.suffix=.html
# 链中模板解析器的顺序
#spring.thymeleaf.template-resolver-order=0
# 可以解析的视图名称的逗号分隔列表
#spring.thymeleaf.view-names=
#thymeleaf end
本文分享自微信公众号 - Java学习进阶手册(javastudyup)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
 
  
  
  
 
 
  
 
 
 