SpringBoot和Spring区别?

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

内容简介:当我们使用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


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

查看所有标签

猜你喜欢:

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

Web Design Handbook

Web Design Handbook

Baeck, Philippe de 编 / 2009-12 / $ 22.54

This non-technical book brings together contemporary web design's latest and most original creative examples in the areas of services, media, blogs, contacts, links and jobs. It also traces the latest......一起来看看 《Web Design Handbook》 这本书的介绍吧!

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

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具