SpringBoot和Spring区别?

栏目: Java · 发布时间: 5年前

内容简介:当我们使用Spring MVC时,我们需要配置组件扫描,调度程序servlet,视图解析器,Web jar(用于提供静态内容)等。下面的代码片段显示了Web.xml配置SpringMVC调度程序DispatchServlet的典型配置。当我们使用Hibernate / JPA时,我们需要配置数据源,实体管理器工厂,事务管理器:

Spring Boot和Spring区别

当我们使用Spring MVC时,我们需要配置组件扫描,调度程序servlet,视图解析器,Web jar(用于提供静态内容)等。

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix">
           <value>/WEB-INF/views/</value>
       </property>
       <property name="suffix">
           <value>.jsp</value>
       </property>
 </bean>
 
 <mvc:resources mapping="/webjars/**" location="/webjars/"/>

下面的代码片段显示了Web.xml配置SpringMVC调度程序DispatchServlet的典型配置。

<servlet>
       <servlet-name>dispatcher</servlet-name>
       <servlet-class>
org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/todo-servlet.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
   </servlet>

   <servlet-mapping>
       <servlet-name>dispatcher</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>

当我们使用Hibernate / JPA时,我们需要配置数据源,实体管理器工厂,事务管理器:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
   destroy-method="close">
        <property name="driverClass" value="${db.driver}" />
        <property name="jdbcUrl" value="${db.url}" />
        <property name="user" value="${db.username}" />
        <property name="password" value="${db.password}" />
    </bean>

    <jdbc:initialize-database data-source="dataSource">
        <jdbc:script location="classpath:config/schema.sql" />
        <jdbc:script location="classpath:config/data.sql" />
    </jdbc:initialize-database>

    <bean
   class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
   id="entityManagerFactory">
        <property name="persistenceUnitName" value="hsql_pu" />
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <property name="dataSource" ref="dataSource" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

Spring Boot带来了新思维过程,将spring mvc jar添加到应用程序中时,Spring能自动配置某些bean吗?

  • 如果Hibernate jar在类路径上,自动配置数据源怎么样?
  • 如果Spring MVC jar在类路径上,自动配置Dispatcher Servlet怎么样?

Spring Boot查看

  • CLASSPATH类路径是否有可用的框架
  • 应用程序的现有配置如何?

基于这些,Spring Boot提供了默认基本配置。这叫做Auto Configuration。

假设我们要开发一个Web应用程序,需要哪些基础组件?

下面列出了我们在Spring MVC中经常需要使用的一些依赖项。这些包括Spring MVC,Jackson Databind(用于数据绑定),Hibernate-Validator(用于使用Java Validation API进行服务器端验证)和Log4j(用于日志记录)

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>4.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.0.2.Final</version>
</dependency>

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

Spring Boot提供一种叫Starter启动器的概念,让你能够在 SpringBoot使用这些组件:

启动器是一组方便的依赖关系描述符,可以将其包含在应用程序中,从而可以获得你所需的所有Spring和相关技术的一站式服务,而无需通过学习示例代码并复制粘贴,然后再去搜索依赖描述符(也就是dependency里面的内容)。例如,如果您想开始使用Spring和JPA进行数据库访问,只需在项目中包含spring-boot-starter-data-jpa依赖项,就可以了。

如果您想开发Web应用程序或应用程序来公开REST服务,Spring Boot Start Web是首选:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

配置好这个启动器,Spring Boot会添加下面依赖项Jar包到我们项目:

SpringBoot和Spring区别?

依赖关系可分为:

  • Spring - core, beans, context, aop
  • Web MVC - (Spring MVC)
  • Jackson - for JSON Binding
  • Validation - Hibernate Validator, Validation API
  • 嵌入式Servlet容器 - Tomcat
  • Logging - logback, slf4j

任何典型的Web应用程序都将使用所有这些依赖项。Spring Boot Starter Web预装了这些。作为开发人员,我不需要担心这些依赖项或它们的兼容版本。其他启动器还有

  • spring-boot-starter-web-services - SOAP Web服务
  • spring-boot-starter-web - Web和RESTful应用程序
  • spring-boot-starter-test - 单元测试和集成测试
  • spring-boot-starter-jdbc - 传统的JDBC
  • spring-boot-starter-hateoas - 为您的服务添加HATEOAS功能
  • spring-boot-starter-security - 使用Spring Security进行身份验证和授权
  • spring-boot-starter-data-jpa - 带有Hibernate的Spring Data JPA
  • spring-boot-starter-cache - 启用Spring Framework的缓存支持
  • spring-boot-starter-data-rest - 使用Spring Data REST公开简单REST服务
  • spring-boot-starter-actuator - 使用开箱即用的监控和跟踪等高级功能
  • spring-boot-starter-undertow,spring-boot-starter-jetty,spring-boot-starter-tomcat - 选择您特定的嵌入式Servlet容器
  • spring-boot-starter-logging - 使用logback进行日志记录
  • spring-boot-starter-log4j2 - 使用Log4j2进行日志记录

下面我们看看Spring Boot如果实现本文开始Spring MVC的那些功能,包括JPA需要哪些步骤?

1. 我们在pom.xml中配置数据库和JPA:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

h2是一个内存数据库,然后我们希望通过JPA使用它,再配置一下JPA:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2.编写代码:你声明一个接口类,注意是接口,不是普通类:

public interface ApplicantRepository extends JpaRepository<Applicant, Long> {

}

这样,你就可以通过下面save命令保存数据到H2中。

applicantRepository.save(applicant);

基本上两步CRUD增删改查就全部搞定,当然再加上REST服务就更完整了。

Spring Boot


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网络江湖三十六计

网络江湖三十六计

程苓峰,王晶 / 经济日报出版社 / 2009-6 / 40.00元

《网络江湖三十六计》内容简介:貌合神离:卖个破绽给对手,让他尝到甜头,自认为可安枕无忧,往往就松懈大意。于是,自己蓄力并反击的机会就来了。诱敌就是“貌合”,暗地发力就是“神离”。一起来看看 《网络江湖三十六计》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具