有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaSpring框架的用途

我一直在学习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据我所知,春天:

  1. 帮助我们绑定整个依赖关系树
  2. 提供与不同技术\框架等的集成;(指JPA、JTA、AOP等)
  3. 提供附加服务,如Spring社交、大数据等

与上述三种说法相同吗


共 (2) 个答案

  1. # 1 楼答案

    我想说,他们特别指的是前两个。通过综合基础设施,Spring文档意味着它们提供了对控制反转和其他底层实现(如JDBC)的抽象。手动将对象连接在一起、连接到数据库、处理不必要的已检查异常等都不好玩,会影响应用程序的实际工作

  2. # 2 楼答案

    Spring Framework还可以处理并从您的代码中带走许多其他东西,包括:

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

    除此之外,Spring Portfolio中还有其他处理其他事情的项目,请列举一些重要的项目:

    • 春季安全
    • Spring集成
    • 春季批次
    • Spring数据

    更多信息: -Transaction Management Abstraction是Spring提供的对不同事务API(如JTA、JDBC事务、Hibernate事务等)的统一访问。。。。因此,您可以开始使用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块)

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

      除了JdbcTemplate,Spring还提供了其他一些模板,包括JpaTemplate、HibernateTemplate、TransactionTemplate、JmsTemplate、JNDemplate、RestTemplate、ReflectionUtils等等,。。。(以及其他一些Spring项目组合中的其他项目)。好消息是,大多数模板的回调都是单方法接口,如果您使用的是Java 8,则可以用Java 8 Labmda替代

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

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

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

    Spring提供了更多的特性,是影响JavaEE的最重要因素之一。事实上,通过查看Spring所做的工作,JavaEE5+开始变得更简单。 欲了解更多信息,请亲自查阅文档