SpringBoot 整合SpringMvc 原理探究(DispatchServlet添加流程)

通过SpringBoot整合各个框架是越来越方便了,整合SpringMVC只需要添加对应的starer依赖即可。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

而且还配备了Tomcat的starter

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

这样,只需要根据自身需求,设置配置文件。启动web服务器只需要运行java application就可以了,不再需要部署到tomcat服务了。

阅读更多

SpringMvc 你该知道如何在HandlerExceptionResolver中获取Model

在项目开发中,我们通常通过参数的形式注入Model对象,如:

1
2
3
4
5
6
@RequestMapping("/demo")
public String demo(Model model) {
model.addAttribute("message", "我是你的message!!!");
// HandlerMethodArgumentResolver
throw new IllegalArgumentException("你就错了!!");
}

直接通过返回String来指定需要返回的View,然后在页面上直接可以访问Model对象的值了。

为了全局统对异常处理,通常我们还有个全局的异常处理中心:
需要实现HandlerExceptionResolver接口,具体配置的话这里就不赘述了。在异常处理中心,统一返回异常消息,这里假设返回的是json信息:

1
2
3
4
5
6
7
8
9
10
11
BaseResponse responseBean = new BaseResponse(Configuration.Status.STATUS_FAIL, filterErrorMsg ? defaultErrorMsg : ex.getMessage());
try {
String message = mapper.writeValueAsString(responseBean);
response.reset();
response.setContentType(contentType);
response.getOutputStream().write(message.getBytes());
response.getOutputStream().flush();
} catch (Exception e) {
log.error(e);
}
return new ModelAndView();

阅读更多

SpringBoot 整合SpringBatch实际项目改造

SpringBoot整合SpringBatch项目,已将代码开源至github,访问地址:https://github.com/cmlbeliever/SpringBatch 欢迎star or fork!

最近由于项目需要开始研究SpringBatch,并且将其整合到SpringBoot中,去除繁杂的xml配置,使用注解,基于约定优于配置的思路进行整合。做到可以非常简单的根据业务需求进行配置,添加新的Batch。

该项目的主要整合了Spring,SpringBoot,Mybatis,DBCP等常用框架,支持DB读写分离。一个注解即可添加新的Batch。

阅读更多

java.lang.IllegalArgumentException An invalid domain [.test.com] was specified for this cookie

当项目中使用单点登录功能时,通常会使用cookie进行信息的保存,这样就可以在多个子域名上存取用户信息。
比如有三个domain分别为test.com,cml.test.com,b.test.com这三个域名下的cookie是需要互相访问的。这时会在response上写入cookie信息

阅读更多

An invalid domain [.test.com] was specified for this cookie 原因分析

java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cookie
以上博客说明了解决办法以及可能的原因,现在就根据log查看tomcat源码看看是异常的原因以及在tomcat8.5上cookie name的规则。
Rfc6265CookieProcessor源码的167-197行代码如下

阅读更多