<返回更多

Spring框架和Spring Boot框架的区别

2019-12-09    
加入收藏

什么是Spring Boot框架?什么是Spring框架?他们的目标是什么?他们产生的背景是怎样的,两者有什么区别,我们应该使用哪个框架进行开发,带着这样的疑问,我们开始今天的讲解。

Spring框架和Spring Boot框架的区别

 

Spring框架背景

Spring框架是JAVA最受欢迎的应用程序开发框架之一。Spring的最佳功能是它具有依赖注入(DI)控制反转(IOC), 这使我们能够开发松耦合的应用程序。而且,松耦合的应用程序可以轻松地进行单元测试。 隔壁的php中的Laravel为什么大手欢迎,也是它实现了依赖注入、控制反转的功能。

Spring框架和Spring Boot框架的区别

 

依赖注入

考虑下面的示例- MyController 要通过 MyService 来执行特定任务。因此,首先我们要获取MyService的实例,我们将使用:

MyService service = new MyService();

现在,我们为创建了实例 MyService ,我们看到两者紧密耦合。如果MyService 在的单元测试中 创建的模拟 MyController ,如何 MyController 使用该模拟?有点困难-是吗?

@RestController
public class MyController {
 private MyService service = new MyService();
 @RequestMApping("/welcome")
 public String welcome() {
 return service.retrieveWelcomeMessage();
 }
}

 依赖注入的示例

仅通过两个注释,我们就可以MyService 轻松获得实例,而实例之间 并不是紧密耦合的。Spring框架做了所有艰苦的工作,使事情变得更简单。

因此,Spring框架将为其创建一个bean MyService 并将其自动连接到中 MyController。

在单元测试中,Spring框架可以将模拟MyService 自动关联到 MyController 。

@Component
public class MyService {
 public String retrieveWelcomeMessage(){
 return "Welcome to InnovationM";
 }
}
@RestController
public class MyController {
 @Autowired
 private MyService service;
 
 @RequestMapping("/welcome")
 public String welcome() {
 return service.retrieveWelcomeMessage();
 }
}

Spring框架还有许多其他功能,以下是一些它比较流行的模块:

面向切面的编程(AOP)是Spring框架的另一个强项。面向对象编程中强调的是,而在AOP中,强调的是

例如,如果要在项目,日志记录等中添加安全性,则可以仅使用AOP并将其作为跨领域的关注点,而不涉及主要业务逻辑。可以在方法调用之后,方法调用之前,方法返回之后或异常发生之后执行任何操作。

Spring框架没有自己的ORM,但是它提供了与ORM的很好的集成,例如Hibernate,Apache iBATIS等。

简而言之,我们可以说Spring框架提供了一种分离的方式来开发Web应用程序。借助Spring中的这些概念(例如Dispatcher Servlet,ModelAndView和View Resolver),Web应用程序开发变得容易。

Spring Boot背景

现在,如果您已经使用过Spring,请考虑一下在开发具有所有功能的成熟Spring应用程序时遇到的问题。设置Hibernate数据源,实体管理器,会话工厂和事务管理非常的复杂,并且要花费大量的时间。对于开发人员来说,使用带有最少功能的Spring MVC建立基本项目可能就需要花费大量时间。

 <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>
<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/my-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时,我们必须配置诸如数据源,EntityManager等之类的东西。

<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解决办法

  1. Spring Boot会完成所有使用的工作, 自动配置并且会处理应用程序所需的所有内部依赖关系-您所需要做的就是运行应用程序。如果Spring jar 在类路径中,则Spring Boot将使用Dispatcher Servlet自动配置 。如果Hibernate jar 在类路径中,它将自动配置到数据源 。Spring Boot为我们提供了一组预配置的Starter项目,这些项目将作为依赖项添加到我们的项目中。
  2. 在Web应用程序开发期间,我们将需要使用的jar,使用的jar版本以及如何将它们连接在一起。所有Web应用程序都具有类似的需求,例如Spring MVC,Jackson Databind,Hibernate core和Log4j(用于日志记录)。因此,我们必须选择所有这些jar的兼容版本。为了降低复杂性,Spring Boot引入了我们所谓的Spring Boot Starters。

Spring Web Project的依赖关系

Spring框架和Spring Boot框架的区别

 

<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>

Starters 是一组方便的依赖项,可以将其包含在Spring Boot应用程序中。对于使用Spring和Hibernate,我们只需要在项目中包括spring-boot-starter-data-jpa依赖项。

Spring Boot Starter Web依赖

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

Spring Boot项目有很多软件包。一旦添加了该启动程序依赖项,Spring Boot Starter Web就会预先打包所有这些文件。作为开发人员,我们无需担心这些依赖关系及其兼容版本。

Spring Boot Starter项目选项

这些是很少的入门项目,可帮助我们快速开发特定类型的应用程序。

Spring框架和Spring Boot框架的区别

 

正是有了Spring Boot,让我们告别了繁琐的配置,可以更加快速专注地开发我们的web应用。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>