2

目前在春季3.2.3上工作。我们已经开发了一个API应用程序,现在已经有2年了。它运作良好。但是随着bean类的增加,有关循环依赖的例外。所以我们通过在application-context.xml中更改default-lazy-init =“true”来解决这个问题。但是,这导致了另一个关于@Scheduled的挑战根本无法实现。春季注释懒惰负载

注意:我们的应用程序使用spring注释,因此bean没有在xml文件中声明。 下面是我的参考代码:

的applicationContext.xml

<beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans"> 

服务类

@Service("notificationService") 
public class NotificationService{ 

    @Scheduled(cron = "0 09 11 * * *") 
    @Async 
    public void sampleNotificaton(){ 

    } 
} 

尝试在提供服务的水平,但循环依赖例外添加@Lazy(假)仍时有发生。

感谢您的建议。 谢谢。

+0

我有同样的问题,但是,未找到任何解决方案? – Nilesh

+0

我会尝试首先解决循环依赖。这是很大的设计气味,一些DI容器根本不允许它。 – luboskrnac

+0

你试过'@ EnableScheduling'注解吗? – luboskrnac

回答

1

因为我们有限制不能打破循环依赖(其中大部分是很容易BTW解决),我会尝试略施小,调度的注释将被提取到单独的bean:

@Component 
public class NotificationScheduler { 
    @Autowired //I prefer contructor injection, but field injection might be needed in this case because or circular dependency 
    private NotificationService notificationService; 

    @Scheduled(cron = "0 09 11 * * *") 
    public void sampleScheduling() { 
     notificationService.sampleNotification(); 
    } 
} 

@Service("notificationService") 
public class NotificationService{ 

    @Async 
    public void sampleNotificaton(){ 

    } 
}