Tag: 代理

在方法上添加@Transactional后,这个类(服务)不能Autowired bean(仓库)?

在MyBootApplication上添加@EnableTransactionManagement @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); } @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); }它打印的TransactionManager是org.springframework.orm.jpa.JpaTransactionManager @Service open class UserService : BaseService() { @Autowired lateinit var repository: UserRepository @Transactional fun updateValid(id: Long, valid: Boolean) { ErrorConstant.ParamErrorCode.IdIsNull.caseThrow { id == 0.toLong() } repository.updateValid(id,valid) […]

当被Spring代理类访问时,Kotlin实例变量为null

我有一个由Spring代理的服务类,如下所示: @Service @Transactional open class MyService { … } 如果我删除了open修饰符,Spring会抱怨它需要代理这个类来应用@Transactional注解调整。 但是,当在代理服务上调用一个函数时会导致问题,该代理服务试图访问一个变量: @Service @Transactional open class MyService { protected val internalVariable = … fun doWork() { internalVariable.execute() // NullPointerException } } internalVariable作为其声明的一部分进行分配,没有任何注释(如@Autowired等),并且当我删除 @Transactional注释和Spring代理类的要求时工作正常 。 为什么当Spring代理/继承我的服务类时,这个变量为null?