我有一些问题。
@Autowired
不可取?Spring-JDBC
而不是Spring-Hibernate
?autowire
所有对象会怎样?请帮我解决这个问题
答案 0 :(得分:4)
<强> 1。在哪种情况下@Autowired不是更好?
自动装配就是简化依赖注入。一开始看起来似乎很容易和有利可图,但后来你会发现它在大型现实项目中无法维持。
Spring中的默认自动装配是by-Type
。当我有任何特定类的多个实例时,我不喜欢它,我必须强制Spring解决注入by-Name
并且必须使用额外的@Qualifier
。在这种情况下,我更喜欢使用JAVAX @Resource
。
此外,有时您可能会遇到必须根据属性/参数创建和注入bean的情况。在这种情况下,@Autowired
可能不起作用,您可能必须选择基于XML的配置。
<强> 2。在哪种情况下,我们更喜欢Spring-JDBC而不是Spring-Hibernate?
JDBC与Hibernate之间的选择完全取决于您的项目以及您认为可以容纳Hibernate等内容的程度。这两种实现都非常快。这两者都有各自的优缺点。
使用Spring's JDBCTemplate
会更容易,因为它只是本机JDBC本身的包装器。这里唯一的事情就是你可能最终编写了数千行代码,这些代码在你的项目开始增长时很难维护。
使用Hibernate
将产生更简洁,更简单的代码,易于维护,但这里的开销可以是学习Hibernate并以某种方式思考以使其适合您的项目。
第3。如果我们自动装配所有对象会发生什么?
这取决于您的项目需求。 @Autowire
仅用于注入依赖项。有时我们会遇到任何特定类的多个实例,在这种情况下,为了避免使用@Qualifier
和@Autowired
来消除歧义,您可以选择将两个注释替换为单个注释@Resource
。
此外,有时您会发现通过基于XML的配置注入依赖关系bean而不是使用@Autowired
会更好。
如果您要自动连接所有课程,则没有任何害处。正如我之前所说,它完全取决于您的项目需求。
答案 1 :(得分:-2)
这是非常普遍的问题,你需要了解春天的基本知识
@Autowire是一个只能用于要注入的spring bean的注释
如果你使用hibernate而不是需要spring hibernate,如果你使用常规的jdbc查询,你将需要spring jdbc
与第一部分类似,您只能在spring bean上使用autowire。什么都不会发生,这将是一个糟糕的设计:)