【发布时间】:2016-06-18 14:29:52
【问题描述】:
我对spring很陌生,所以我可能会问一些愚蠢的问题,但无论如何......
我已经构建了 Spring MVC 4.0 应用程序。
我的设置是这样的:
控制器 >> 服务 >> DAO
在控制器级别我使用大约 4 到 5 个不同的 @Autowired 变量,像这样
@Autowired
private ClientService clientService;
@Autowired
private CommentService commentService;
@Autowired
private SearchService searchService;
在服务级别 I Autowire 也有几个 DAO
@Autowired
SearchDAO searchDAO;
@Autowired
private ActivityDAO activityDAO;
@Autowired
private UserService userService;
我有大约 10 个不同的控制器,其中大多数我 @Autowire 相同的服务,所以我的问题是这样好吗?
可以根据需要多次使用@Autowire 还是会带来过多的内存使用?它会对我的应用程序产生其他影响吗?
我使用 Spring 4.0 + hibernate JPA
【问题讨论】:
-
我不会担心内存使用,但这么多的依赖关系可能是违反
Single Responsibility Principle的标志。这不是一个硬性规定,但有可能你的班级有太多的责任。也许你可以把它们分解成更小的服务。 -
spring中的beans默认是单例的,所以只有一个实例存在。没有内存问题
-
我同意阿里的观点。您可能还想拆分控制器
-
按域对象定义服务对我来说似乎是一种反模式。服务通常实现使用不同类型域对象的用户活动,无论如何都必须在同一事务中进行操作,因此这种隔离没有帮助,并且导致服务数量荒谬。
标签: java spring hibernate spring-mvc