关于Spring @Autowired和Spring JDBC的问题

时间:2016-01-27 07:40:47

标签: java spring hibernate jdbc

我有一些问题。

  1. 在哪种情况下@Autowired不可取?
  2. 在哪种情况下,我们更喜欢Spring-JDBC而不是Spring-Hibernate
  3. 如果我们autowire所有对象会怎样?
  4. 请帮我解决这个问题

2 个答案:

答案 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)

这是非常普遍的问题,你需要了解春天的基本知识

  1. @Autowire是一个只能用于要注入的spring bean的注释

  2. 如果你使用hibernate而不是需要spring hibernate,如果你使用常规的jdbc查询,你将需要spring jdbc

  3. 与第一部分类似,您只能在spring bean上使用autowire。什么都不会发生,这将是一个糟糕的设计:)