SPRING 七月 19, 2020

谁动了我的异常 Plus

文章字数 5.9k 阅读约需 5 mins.

书接上文,在 谁动了我的异常? 中,有几个问题没说清楚,本文将继续进行说明。
为了方便,相关示例代码上传至了 https://github.com/AlphaHinex/proxy-in-spring ...

查看全文

SPRING 七月 19, 2020

谁动了我的异常 Plus

文章字数 5.9k 阅读约需 5 mins.

书接上文,在 谁动了我的异常? 中,有几个问题没说清楚,本文将继续进行说明。
为了方便,相关示例代码上传至了 https://github.com/AlphaHinex/proxy-in-spring

示例代码中,定义了如下内容:

ClassController 中定义了一个没有声明异常...

查看全文

SPRING 六月 26, 2020

谁动了我的异常?

文章字数 11k 阅读约需 10 mins.

通常来讲,为方便开发,我们会对异常进行统一的处理。会定义一个异常基类,针对基于这个基类的自定义异常进行统一处理。

当异常基类为检查型异常(Checked Exception)时,如果自定义异常是通过切面等代理抛出的,被代理的方法本身并未抛出且也未声明此异常时,就会遇到这个问题:

统一异常处理方法中,捕获到的异常,已不是代理类中抛出的自定义异常,而是一个将自定义异常包装在内的 java.lang.reflect.UndeclaredThrowableException

那么为什么会这样呢?

以使...

查看全文

SPRING 四月 30, 2020

Servlet 注册到了哪?

文章字数 4.1k 阅读约需 4 mins.

还在给每个请求加前缀避免模块间接口冲突呢? 中内容,我们可以通过 ServletRegistrationBean 注册多个 DispatcherServlet,那么 Servlet 被注册到哪了呢?

简单的回答:Servlet 容器。

没毛病!但马达马达大内!注册到了 Servlet 容器里的哪?存在什么结构里?

让我们以 Tomcat 容器为例,刨根问底。

ServletRegistrationBean 中,有一个 addRegistration 方法,将具体的 Servlet 添加到...

查看全文

SPRING 四月 24, 2020

还在给每个请求加前缀避免模块间接口冲突呢?

文章字数 3.8k 阅读约需 3 mins.

Spring MVC 按模块开发时,可能经常会遇到这个场景:一个模块由一个开发人员负责开发,模块内能较好的保证 RequestMapping 的 path 不重复,但模块间就很难有效的方式保证唯一。

通常有两种处理方式:

  1. 对开发进行规范或约定,为每个模块起一个前缀,要求在模块内开发的所有 controller 都带上前缀,这样就只要保证模块内唯一即可。
  2. 每个模块部署为单独的服务,通过 servlet context path 进行区分。

两种方式都能解决问题,但同时也都会带来一些问题:

  1. 依...
查看全文

SPRING 四月 17, 2020

Spring 中如何根据请求调用对应方法

文章字数 16k 阅读约需 15 mins.

假设能够获得到一个 HttpServletRequest,需要根据这个请求内的具体信息,找到其所对应的 Spring Controller 中的方法,并对方法进行调用,获得该方法的返回值。

这个需求,与 DispatcherServlet 的作用非常类似。先看一下请求到达 DispatcherServlet 之后的处理流程:

因为最终目标是获得请求对应的 Controller 方法的返回值,所以上图中的流程走到第 4 步即可。

  1. HttpServletRequest 请求抵达 DispatcherServlet...
查看全文

SPRING ROLL 二月 14, 2020

集成 Spring Roll 的通用导出列表数据为 Excel 功能

文章字数 6.7k 阅读约需 6 mins.

Spring Roll 中提供了一个基于业务 REST Controller 实现的通用 Excel 导出功能,可将列表页查询结果直接导出为 Excel 文件。

本文描述如何集成 roll-export 模块,获得通用导出功能。

Spring Roll 的包目前发布在 GitHub Packages 中,可参照 GitHub Packages in Action 或官方文档,对构建工具进行配置。

之后可在 Maven 中添加:

<dependency>
    <groupId>...
查看全文

JAVA 五月 15, 2018

Using Liquibase with Gradle in Spring Project

文章字数 14k 阅读约需 13 mins.

Spring 项目通过 Gradle 插件使用 Liquibase 的简易说明

引用 Liquibase 官网 的一张图片:

类似的工具还有 Flyway

Flyway 官网 上有一个同类工具特性的对比,详见 Feature Comparison 部分或下图:

看图的话,Flyway 完胜,不过 等等!看完下面内容再做决定

查看全文

JAVA 十月 22, 2015

在 Spring 项目中配置多个 property-placeholder

文章字数 898 阅读约需 1 mins.

使用 context:property-placeholder 的默认配置,在 Spring 项目中设置多处时会遇到其中某些配置的占位符不能正确替换的情况,如何解决?

提供两个方案:

  1. 只设置一处 context:property-placeholder

     <context:property-placeholder location="classpath*:path/to/*.properties" />

    假设你的 profile 是通过 .properties...

查看全文
0%