最近太热了,北京的疫情又有所反弹,天天戴个大口罩子,什么事情都不想干了,只想大字型躺在床上——保持呼吸。
今天稍微能够提振心情,简单的记录一下我最近的内部分享,有兴趣的看官凑合读读吧。
首先从静态代理说起。
静态代理的例子分为几步:
1. 声明个接口(I)。
2. 创建个实现类(A),实现接口。
3. 创建个实现类(B),实现接口,同时构造函数的参数类型为接口(I)。
...
Spring编程式事务
我们经常用到的Spring事务声明方式是:
使用AOP切面声明事务。使用注解@Transactional声明事务。
这次试验一下另外一种事务实现方式:编程式事务。
以SpringBoot项目为例,使用以下代码声明事务:
@Primary@Bean(name = "transactionManager")public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("dataSource")DataSource dataSource)...
AOP的事务包裹
我们有时候会希望这样:
@拦截的注解
private void 我是被拦截的函数() {
... ....
}
//环绕通知
@Around("...")
public void roundRun(ProceedingJoinPoint joinPoint) {
try {
//执行被拦截的函数
joinPoint.proceed();
//做一些记录或者业务逻辑判断
... ...
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
在“做一...
Nutz.DAO+Atomikos出现ResourceException错误
一直使用Atomikos做跨数据库的事务处理,之前都是SpringMVC+Hibernate+Atomikos,因为最近使用Nutz.DAO感觉很轻量很便捷,所以现在有一些项目使用SpringMVC+Nutz.Dao来做,今天遇到跨库需求,所以自然而然的引进了Atomikos,不过就出现了如题的错误,这个错误很奇怪,第一次请求数据库时发生,在之后就不会出现,困扰了很久,错误的具体内容如下:
HTTP Status 500 - Request processing failed; nested ex...
使用注解实现SpringAop
SpringMVC启动的配置文件,扫描包时不要扫描Service,配置如下:
<context:component-scan base-package="com.xnck">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
Spirng的配置文件,扫描包时不要扫描Controller,配置如下:
<context:component-scan base-package="com.xnck">
&...