在春天从服务类调用另一个控制器

时间:2016-03-24 11:40:47

标签: spring

从@service类调用@controller类是一个好习惯吗?

目前我正在从另一个控制器(Spring Boot Project)直接调用控制器,我打算在它们之间引入@service层。

请告诉我

1 个答案:

答案 0 :(得分:2)

我不会直接从服务层调用控制器。您可能会获得循环依赖。

我会通过依赖注入使用observer pattern。当控制器实现接口时,您可以将其自动装入您的服务中。

public interface Observer {

    void eventHappened();

}

@Controller
public class YourController implements Observer {

}

@Service
public class YourService {

    @Autowired
    private Observer o;

    // call o.eventHappened() somewhere in your code
}

如果您的控制器也有对您服务的引用,您可能需要使用InitializingBean来注册观察者。