我是Spring交易新手。 有些东西我觉得很奇怪,可能我确实理解了这一点。 我想要在方法级别有一个事务处理,并且在同一个类中有一个调用者方法,看起来好像不是这样,它必须从单独的类中调用。 我不明白怎么可能。 如果有人有一个想法如何解决这个问题,我将不胜感激。 我想用同一个类来调用带注释的事务方法。 这里是代码: public class UserService { @Transactional public boolean addUser(String userName, String password) { try { // call DAO layer and adds to database. } catch (Throwable e) { TransactionAspectSupport.currentTransactionStatus() .setRollbackOnly(); } } public boolean addUsers(List<User> users) { for (User user : users) { addUser(user.getUserName, user.getPassword); } } }
我想用指定的注释(比如@Monitor)来监视所有类的所有公共方法(注意:注解是在类级别的)。 这可能是一个可能的切入点? 注意:我正在使用@AspectJ风格的Spring AOP。
我玩的想法是使用Spring @Configurable和@Autowire将DAO注入到域对象中,以便它们不需要直接了解持久层。 我试图按照http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-atconfigurable ,但我的代码似乎没有效果。 基本上,我有: @Configurable public class Artist { @Autowired private ArtistDAO artistDao; public void setArtistDao(ArtistDAO artistDao) { this.artistDao = artistDao; } public void save() { artistDao.save(this); } } 和: public interface ArtistDAO { public void save(Artist artist); } 和 @Component public class ArtistDAOImpl implements ArtistDAO { @Override public void save(Artist artist) { System.out.println("saving"); […]
我想知道当你使用@Transactional注解一个方法时究竟发生了什么? 当然,我知道Spring将在一个事务中包装这个方法。 但是,我有以下怀疑: 我听说Spring创build一个代理类 ? 有人可以更深入地解释这一点。 那个代理类实际上驻留了什么? 实际上课会发生什么? 我怎样才能看到Spring创build的代理类 我还在Spring的文档中看到: 注意:由于这个机制是基于代理的,所以只有通过代理进入的“外部”方法调用才会被拦截 。 这意味着即使被调用的方法标记为@Transactional ,“自调用”(即调用目标对象的其他方法的目标对象内的方法)也不会导致实际的事务处理。 资料来源: http : //static.springsource.org/spring/docs/2.0.x/reference/transaction.html 为什么只有外部方法调用将在事务中,而不是自调用方法?