java - 关于 Spring @Autowired 和 Spring JDBC 的问题

标签 java spring hibernate jdbc

我有一些问题。

  1. 在这种情况下@Autowired不是更好吗?
  2. 在哪种情况下,我们必须选择Spring-JDBCSpring-Hibernate
  3. 如果我们 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/

相关文章:

java - org.hibernate.PropertyValueException : not-null property references a null or transient value:

java - 如何向 "/users?<some-query-here>"发出 GET 请求,然后在 JSON 数组中返回所有满足查询条件的用户

Spring+Hibernate+SQLite 事务异常

java - Java中弹性计算节点的架构选项

java - IRetryAnalyzer 帮助,无法使其工作

java - 从 Java 中的字段中提取多个泛型类型

java - Spring 4 + Cassandra 3.4 + 不工作

java - hibernate中的注释是hibernate还是java持久化API?

java - 如何在 Java 中创建从两个变量读取数据的 XY 图表?

java - 在java中使用charAt添加字符给了我错误的总和