spring 拾遗
1.@PostConstruct VS init-method
1.1 both BeanPostProcessor
1.2 @PostConstruct is a JSR-250 annotation while init-method is Spring's way of having an initializing method.
1.3 If you have a @PostConstruct method, this will be called first before the initializing methods are called.
1.4 If your bean implements InitializingBean and overrides afterPropertiesSet , first @PostConstruct is called,
then the afterPropertiesSet and then init-method.
2.
EntityManagerFactory emf = ...
EntityManagerHolder holder = (EntityManagerHolder)TransactionSynchronizationManager.getResource(emf);
EntityManager em = holder.getEntityManager();
3.MethodValidationPostProcessor
A convenient BeanPostProcessor implementation that delegates to a JSR-303 provider for performing
method-level validation on annotated methods.
4.LocalSessionFactoryBean
FactoryBean that creates a Hibernate SessionFactory. This is the usual way to set up a shared Hibernate
SessionFactory in a Spring application context; the SessionFactory can then be passed to Hibernate-based
data access objects via dependency injection.
5.LocalContainerEntityManagerFactoryBean
FactoryBean that creates a JPA EntityManagerFactory according to JPA's standard container bootstrap contract.
This is the most powerful way to set up a shared JPA EntityManagerFactory in a Spring application context;
the EntityManagerFactory can then be passed to JPA-based DAOs via dependency injection. Note that
switching to a JNDI lookup or to a LocalEntityManagerFactoryBean definition is just a matter of configuration!
6.SharedEntityManagerCreator
Delegate for creating a shareable JPA EntityManager reference for a given EntityManagerFactory.
A shared EntityManager will behave just like an EntityManager fetched from an application server's JNDI
environment, as defined by the JPA specification. It will delegate all calls to the current transactional
EntityManager, if any; otherwise it will fall back to a newly created EntityManager per operation.
For a behavioral definition of such a shared transactional EntityManager, see PersistenceContextType.TRANSACTION
and its discussion in the JPA spec document. This is also the default being used for the annotation-based PersistenceContext.type().
14.3.5 Transaction management strategies
Both TransactionTemplate and TransactionInterceptor delegate the actual transaction handling to a PlatformTransactionManager
instance, which can be a HibernateTransactionManager (for a single Hibernate SessionFactory, using a ThreadLocal Session under
the hood) or a JtaTransactionManager (delegating to the JTA subsystem of the container) for Hibernate applications. You can
even use a customPlatformTransactionManager implementation. Switching from native Hibernate transaction management to
JTA, such as when facing distributed transaction requirements for certain deployments of your application, is just a matter
of configuration. Simply replace the Hibernate transaction manager with Spring’s JTA transaction implementation. Both
transaction demarcation and data access code will work without changes, because they just use the generic transaction
management APIs.
For distributed transactions across multiple Hibernate session factories, simply combine JtaTransactionManager as a transaction
strategy with multiple LocalSessionFactoryBean definitions. Each DAO then gets one specific SessionFactory reference passed into
its corresponding bean property. If all underlying JDBC data sources are transactional container ones, a business service can
demarcate transactions across any number of DAOs and any number of session factories without special regard, as long as it
is using JtaTransactionManager as the strategy.
7.
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.ys.scs.performance.PerformanceService
com.ys.scs.vip.MemberCardService.performanceService; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'performanceService': Bean with name 'performanceService' has been injected into other beans [resetTaskPerformanceService,billAdaptorService]
in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean.
This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
该问题出现的原因是:在正常加载完依赖后,因为 @Async 注解的出现,又需将该 Bean 代理一次,然后 Spring 发现该 Bean 已经被其他对象注入,
且注入的是没被代理过的版本,于是报错。@Lazy注解可以解决
spring 拾遗的更多相关文章
- spring拾遗(一)——@Value注入static属性
一般情况的下的@Value是用在非静态方法上的,如下: import org.springframework.beans.factory.annotation.Value; import org.sp ...
- Spring 实践 -拾遗
Spring 实践 标签: Java与设计模式 Junit集成 前面多次用到@RunWith与@ContextConfiguration,在测试类添加这两个注解,程序就会自动加载Spring配置并初始 ...
- Java注解拾遗
注解简介: 注解Annotation是jdk1.5的新增功能,在现在的日常开发中,几乎离不开注解,写篇短文,来做个拾遗. 注解作用: Annotation(注解)的作用是修饰包.类.构造方法.方法.成 ...
- Spring IOC 概述
Spring IOC 概述 IOC(Inversion of Control) 控制反转,也叫 DI(D_ependency injection_) 依赖注入.是一种设计思想.不过我并不同意所谓反转的 ...
- 精尽Spring MVC源码分析 - 寻找遗失的 web.xml
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
随机推荐
- Java中的阻塞队列(BlockingQueue)
1. 什么是阻塞队列 阻塞队列(BlockingQueue)是 Java 5 并发新特性中的内容,阻塞队列的接口是 java.util.concurrent.BlockingQueue,它提供了两个附 ...
- HashMap与ConcurrentHashMap的区别(转)
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心. 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从 ...
- zabbix的agent端的主动模式关键三个参数
如多主机超过300+和队列内容过多,就采用主动模式. [root@web03 zabbix]# egrep -v "^#|^$" zabbix_agentd.conf PidFil ...
- CSS(七):浮动
一.float属性取值:left:左浮动right:右浮动none:不浮动 先看下面的一个例子: <!DOCTYPE html> <html lang="en"& ...
- wrk -- 小巧轻盈的 http 性能测试工具.
标签: wrk http 性能 | 发表时间:2015-06-21 00:55 | 作者:zjumty 出处:http://www.iteye.com 测试先行是软件系统质量保证的有效手段. 在单元测 ...
- 【BZOJ】1029: [JSOI2007]建筑抢修(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1029 按右端点排序后依次加入,并且每一次看是否能被修筑,如果能就修:否则查找原来修过的,如果原来修过 ...
- MFC存储图片到SQL Server数据库
第一步:建立数据库表,比如:id char,pic image. 第二步:建立MFC单文档应用程序,再添加类CMyRecordset,基类选择CRecordset,导入数据库的刚建立的表. 第三步:在 ...
- iOS 开发之--使用AFNetWorking3.1.0上传单张/多张图片
在调试接口的时候,遇到一个问题,就是多张图片上传的时候,不管我上传多少张,只会上传成功最后一张,也就是说只有一张图片上传成功了,针对这个问题,通过查找资料,找到了原因,首先,在上传的过程中,我们获取到 ...
- Hadoop单机安装配置过程:
1. 首先安装JDK,必须是sun公司的jdk,最好1.6版本以上. 最后java –version 查看成功与否. 注意配置/etc/profile文件,在其后面加上下面几句: export JAV ...
- 阿里云CentOS6.8云服务器配置安全组规则
前提:已经购买阿里云服务器,域名解析也完成了 需要对安全组规则进行配置,才能进行访问 1.进入阿里云首页https://www.aliyun.com/,如下图 2.进入控制台首页,如下图 3.在上图页 ...