项目中遇到一个Spring初始化bean的问题;
1.在spring中定义一个bean,然后注入部分属性值;
2.在spring-transaction中定义该类进行事务拦截
3.在使用该类时进行注入,得到的是代理类,但是代理类中的属性值都变成系统默认值了
原因:
Spring对需要事务的类 进行了代理,代理是重新生成一个该bean的实例,与原来已被Spring初始化过的bean没有关系;Spring使用cglib里面的callback 保存原来bean 对象;当进行代理方法调用时,获取去callback里面的被代理对象,调用其方法;