gpt4 book ai didi

java - Spring框架的目的

转载 作者:行者123 更新时间:2023-11-29 07:51:06 25 4
gpt4 key购买 nike

我一直在学习 Spring,所以我决定阅读来自 here 的 Spring 文档.我面对下一个短语:

Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application.

comprehensive infrastructure 是什么意思? 据我了解 Spring:

  1. 帮助我们绑定(bind)整个依赖树;
  2. 提供与不同技术\框架等的集成; (指 JPA、JTA、AOP 等)
  3. 提供Spring Social、Big Data等附加服务。

comprehensive infrastructure support是否与上述三种说法相同?

最佳答案

Spring Framework 处理许多其他事情并从您的代码中删除,包括:

  • IoC 和 AOP,配置应用
  • JNDI
  • 事务管理抽象
  • 使用不同的技术(例如 JDBC 和 JPA)处理单个事务/连接
  • 确保资源释放(使用模板)
  • 统一事件调度器
  • 提供通用的Aspects,例如异步方法调用和事务
  • 与 JMS、JPA、Hibernate 集成......
  • 透明的远程处理(使用不同的技术)
  • MVC Servlet 和 Portlet 框架
  • 轻松实现和使用网络服务(包括 REST)
  • 缓存
  • 与 CXF、Apache Camel 等许多工具轻松集成......

除此之外,Spring Portfolio 中还有其他项目,它们处理其他事情,只说重要的:

  • Spring 安全
  • Spring 整合
  • Spring 批处理
  • Spring 数据

更多信息: - Transaction Management Abstraction是 Spring 提供的统一访问不同的事务 API,例如 JTA、JDBC Transaction、Hibernate Transaction,...。因此您可以开始使用 Hibernate Transaction 进行编码,并将事务管理器更改为由应用程序服务器管理的容器,而无需更改任何代码(只需更改配置即可)。

  • 在使用基于 JDBC 的 API(并且依赖于 JDBC)时,例如 Hibernate、JPA 和 MyBatis。 Spring 可以处理每个线程的连接/事务的唯一性,因此如果您使用 JDBC 执行一些查询,一些查询使用 HQL,一些查询使用 JPQL,所有这些都将使用单个连接/事务执行。

  • 当涉及到资源管理时,事情变得很糟糕,例如,在处理 JDBC 工作时,您应该做如下事情:

    Connection connection = null;
    PreparedStatement statement = null;
    try {
    connection = dataSouce.getConnection();
    statement = connection.prepareStatement('some query');

    statement.executeUpdate();
    } catch(SQLException e) {
    throw new SomeWrapperException(e);
    } finally {
    try {
    // if (statement != null) {
    // statement.close();
    // }
    if (connection != null) {
    connection.close();
    }
    } catch (SQLException e) {
    throw new SomeWrapperException(e);
    }
    }

    如您所见,有很多行代码仅用于执行单个查询,而且我也忽略了关闭 Statement(如果我想释放它,我应该添加更多嵌套的 try-catch-finally block )。

    使用 Spring JdbcTemplate,Spring handles all steps which are just for resource creation, and releasing .您只需编写业务逻辑所需的代码即可。

    除了 JdbcTemplate 之外,Spring 中还有一些其他模板可用,包括 JpaTemplate、HibernateTemplate、TransactionTemplate、JmsTemplate、JndiTemplate、RestTemplate、ReflectionUtils 等(以及其他一些 Spring Portfolio 项目中的模板)。好消息是,大多数模板的回调都是单一方法接口(interface),如果您使用的是 Java 8,可以将其替换为 Java 8 Labmda

  • 数据访问异常的统一层次结构是使用 Spring 数据访问模板时的另一个特性。因此,如果您使用 JDBC、Hibernate 等,异常将是相同的,因此更改数据访问层的实现不会传播到其他层。

  • Spring 可以将方面应用于其容器中定义的 bean。其中一个方面是异步方法调用,描述为 here .

  • 您可以使用 RMI、Web 服务进行远程处理,而无需添加特定于框架的异常(例如 RemoteException)或实现接口(interface)(例如 Remote)。事实上,您的客户端核心并不知道 bean 的远程性,远程或本地是配置问题,可以查看更多信息 here .

Spring 提供了更多的特性,并且是影响 Java EE 的最重要的因素之一。事实上,通过查看 Spring 所做的工作,Java EE 5+ 开始变得更简单。有关更多信息,您应该自己深入研究文档。

关于java - Spring框架的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21142408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com