我有一些问题。
- 在这种情况下
@Autowired
不是更好吗? - 在哪种情况下,我们必须选择
Spring-JDBC
比Spring-Hibernate
? - 如果我们
autowire
会发生什么所有的物体?
请帮我解决这个问题
最佳答案
<强>1。在哪种情况下 @Autowired 不是更好的选择?
Autowiring 就是为了简化依赖注入(inject)。一开始这似乎很容易而且利润丰厚,但后来你会意识到它在大型现实项目中是不可维护的。
Spring 中的默认 Autowiring 是by-Type
。当我有多个特定类的实例时,我不喜欢它,并且我必须强制 Spring 解析注入(inject) by-Name
并且必须使用额外的 @Qualifier
。在这种情况下,我更喜欢使用 JAVAX @Resource
。
此外,有时您可能会遇到必须根据属性/参数创建和注入(inject) Bean 的情况。在这种情况下,@Autowired
可能不起作用,您可能必须选择基于 XML 的配置。
<强>2。在什么场景下,我们必须选择 Spring-JDBC 而不是 Spring-Hibernate?
在 JDBC 与 Hibernate 之间进行选择完全取决于您的项目以及您认为自己能够适应 Hibernate 之类的东西的程度。这两种实现确实都非常快。这两者都有各自的优点和缺点。
使用Spring 的 JDBCTemplate
会更容易一些,因为它只是 native JDBC 本身的包装器。这里唯一的问题是,您可能最终会编写数千行代码,一旦您的项目开始增长,这些代码就很难维护。
使用 Hibernate
将产生更干净、更简单的代码,易于维护,但这里的开销可能是学习 Hibernate 并以某种方式思考以使其适合您的项目。
<强>3。如果我们 Autowiring 所有对象会发生什么?
这取决于您的项目需求。 @Autowire
仅用于注入(inject)依赖项。有时,我们会遇到任何特定类的多个实例,在这种情况下,为了避免使用 @Qualifier
和 @Autowired
来消除歧义,您可以选择将两个注释替换为带有 @Resource
的单个注释。
此外,有时您会发现通过基于 XML 的配置注入(inject)依赖项 Bean 比使用 @Autowired
更好。
如果您 Autowiring 所有类,也没有什么坏处。正如我之前所说,这完全取决于您的项目需求。
关于java - 关于 Spring @Autowired 和 Spring JDBC 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35031379/