方法一: 创建工具类 ApplicationContextRegister.java import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotati…
创建公共Utils 类 ApplicationContextRegister @Component @Lazy(false) public class ApplicationContextRegister  implements ApplicationContextAware { private static ApplicationContext APPLICATION_CONTEXT; /** * 设置spring上下文  *  * @param applicationContext spri…
场景: 现在有这么一个情况,就是在service中提供的一个方法是先将符合条件的数据全部删除,然后再将新的条件全部插入数据库中 这个场景需要保证service中执行两步 1.删除 2.插入 这两步自然是在同一个事务中完成才是一个完整的操作. 那么针对这个场景,看看注解怎么用 1>>先看dao层 链接:http://www.cnblogs.com/sxdcgaq8080/p/8984140.html dao层也就是repository层的delete操作,也就是在jpa中使用delete操作,需…
开发一个微信小程序后台,建立websocket 长连接,需要后台开启定时任务, 定时任务定时查库,相应前台 但是具体执行过程中一直在报空指针错误,最后定位到service 为空,无法调用其相关的方法导致的 于是我尝试不用@Autowired 注入实例,自己new ,但是还是失败了,报空指针 这是spring的一个Bug ,需要手动去配置一个类,主动获取实例,在定时任务中(继承TimerTask类),@Autowired 是失效的,无法注入 解决方案如下: 1.首先添加一个工具类,就是applic…
package cn.lijun.service; import java.sql.Connection;import java.sql.SQLException; import cn.lijun.dao.TransferDao;import utils.DataSourceUtils; public class TranseferService { public boolean transfer(String out, String in, double money) { TransferDa…
在web环境中,一般serviceImpl中的dao之类的数据库连接都由容器启动的时候创建好了,不会报错.但是在main中,没有这个环境,所以需要获取环境: ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml"); PianoServiceImpl pianoService = (PianoServiceImpl) ctx.getBean("piano…
@SpringBootTest(classes = {DataSourceAutoConfiguration.class,MybatisAutoConfiguration.class,****Impl.class}) 根据classes 里类的先后顺序加载. 之前没注意这个问题 第一次是蒙对了 后面感觉莫名其妙出现SqlSessionFactory和SqlSessionTemplates注入失败. 一直在找数据源这一块的问题,一直找不到,后来看了Configuration才恍然大悟…
springBoot使用事物比较简单,在Application启动类s上添加@EnableTransactionManagement注解,然后在service层的方法上添加@Transactional注解 @Transactional属性 属性 类型 描述 value String 可选的限定描述符,指定使用的事务管理器 propagation enum: Propagation 可选的事务传播行为设置 isolation enum: Isolation 可选的事务隔离级别设置 readOnly…
在java的spring框架中,用Timer和TimerTask来实现定时任务,有时我们要在TimerTask的子类的重写run方法里,调用service层的方法. 但是不管是spring.xml配置的bean还是注解@autoware注入的bean,在执行的时候都会报空指针异常. 刚开始的代码: 代码一:TimerTask的子类 public class AbcTask extends TimerTask { private AaaDAO aaaDAO; public void setAaaD…
问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据, 把这条执行的sql语句复制下来在数据库中直接操作是可以执行更新到的!! 分析问题: 既然sql语句的执行已经在控制台打印出来了,说明肯定是执行到了sql,那最后数据库中没有更新成最新的数据,可能有以下几个解决方法 解决方法: 1.service层的方法上并未添加@Transactional注解…