有时 Spring 组件可能如下所示:
@Service
public final class SomeService {
@Autowired
private SomeService2 someService2;
@Autowired
private SomeService3 someService3;
@Autowired
private SomeService4 someService4;
// … and many other services
@Autowired
private SomeDao someDao;
@Autowired
private SomeDao2 someDao2;
@Autowired
private SomeDao3 someDao3;
// … and many other DAOs
}
换句话说,Spring 组件有很多服务和 DAO,这些服务和 DAO 在其他 Spring 组件中大部分是重复的。恕我直言,它有以下缺点:
用于自动装配大多数相同组件的不必要(样板)代码
有时由于组件之间的循环引用,可能会出现 Spring 上下文加载错误
如何使用组合所有服务或所有 DAO 的一体化组件。它将仅包含指向 Spring 组件的链接,其中没有任何业务逻辑:
@Service
public final class AllServices {
@Autowired
private SomeService2 someService2;
@Autowired
private SomeService3 someService3;
@Autowired
private SomeService4 someService4;
// … and many other services
// get methods to get some service
public someService getSomeService(){};
并将其注入其他组件:
@Service
public final class SomeService {
@Autowired
private AllServices serv;
@Autowired
private AllDaos daos;
@Autowired
private Environment env;
// inside some code
…
serv.getSomeService().processData();
恕我直言,如果没有循环引用问题,它看起来会更简洁……
这种方法有什么优点和缺点?
繁花如伊
海绵宝宝撒
相关分类