SpringBoot @Scheduled和@Transactional是否需要在单独的类中?

时间:2019-07-24 11:25:27

标签: spring-boot transactions scheduled-tasks

我读到,由于Spring默认的AOP实现,将@Scheduled@Transactional批注放在一起并不是一个好习惯。 (代理类等)

我决定自己尝试一下,并且创建了一个非常短的应用程序进行测试,但是令人惊讶的是,当我将这些内容放在一起以及为注释创建单独的Schedule服务时,我的代码也可以正常工作。

@Entity
class AEntity(
        @OneToMany(mappedBy = "aEntity", fetch = FetchType.LAZY, cascade = [CascadeType.REMOVE])
        var bEntities: MutableSet<BEntity>? = null,
        @Id @GeneratedValue var id: Long? = null
)

@Entity
class BEntity(
        @ManyToOne
        @JoinColumn(name = "a_entity_id", referencedColumnName = "id")
        var aEntity: AEntity,
        @Id @GeneratedValue var id: Long? = null
)

服务:

@Service
class AService(val aRepository: ARepository) {

    @Scheduled(fixedRate = 5000)
    @Transactional
    fun test() {
        val aEntity = aRepository.findOneById(1)
        aEntity?.bEntities?.forEach {
            println(it.id)
        }
    }
}

您可以从here进入我的完整项目

0 个答案:

没有答案