Spring框架和Spring boot有啥區別?
首先看看Spring, 它是一個IOC框架,或者稱依賴注入DI框架,又是一個AOP框架。這裡就不多講這些特性了,spring框架還有更多其他特性,有二十個模組,能解決很多問題:
Spring JDBC
Spring MVC
Spring AOP
Spring ORM
Spring JMS
Spring Test
Spring Expression Language (SpEL)
spring框架雖然沒有自己的ORM,但是很好地整合了 Hibernate, Apache iBATIS等等。
Spring MVC提供了介面的MVC實現,使得WEB開發非常方便。
既然Spring解決了這麼多問題,那麼為什麼我們還需要 Spring Boot?
我們看看實際中開發具有所有功能的完整Spring應用程式時所面臨的問題, 設定Hibernate Datasource、實體管理器、會話工廠和事務管理有很多困難。對於一個開發人員來說,使用SpringMVC建立一個基本專案需要花費大量的時間,而且實現的功能最少。
當我們使用 Hibernate, 需要配置 datasource, EntityManager等:
SpringBoot如何解決這個問題?
Spring Boot自動配置所需的所有內部依賴關係,我們只要執行應用程式即可。
1.如果spring的jar包在類路徑classpath中,SpringBoot將自動配置Dispatcher servlet。如果Hibernate的jar包在類路徑,它將自動配置資料來源。
2.SpringBoot為我們提供了一組預先配置好的啟動專案,這些專案將作為依賴項新增到我們的專案中。
在web應用程式開發過程中,我們需要使用JAR包,並確定要使用的JAR版本,以及如何將它們連線在一起。所有Web應用程式都有類似的需求,例如SpringMVC、JacksonDatabind、Hibernate核心和Log4j(用於日誌記錄)。因此,我們不得不保持所有這些JAR版本相容。
spring boot為了降低這些複雜性,引入了 Spring Boot Starter
starter是一組方便的依賴項,可以在SpringBoot應用程式中包含這些依賴項。為了使用Spring和Hibernate,我們只需在專案中包含Spring-boot-starter-data-jpa依賴項。
下面是啟動spring web項的配置,可以實現RESTful風格API。
下圖顯示了這一個依賴加入的所有依賴包:
Spring JDBC
Spring MVC
Spring AOP
Spring ORM
Spring JMS
Spring Test
Spring Expression Language (SpEL)
spring框架雖然沒有自己的ORM,但是很好地整合了 Hibernate, Apache iBATIS等等。
Spring MVC提供了介面的MVC實現,使得WEB開發非常方便。
既然Spring解決了這麼多問題,那麼為什麼我們還需要 Spring Boot?
我們看看實際中開發具有所有功能的完整Spring應用程式時所面臨的問題, 設定Hibernate Datasource、實體管理器、會話工廠和事務管理有很多困難。對於一個開發人員來說,使用SpringMVC建立一個基本專案需要花費大量的時間,而且實現的功能最少。
<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/"/> <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> <p class="indent"> |
當我們使用 Hibernate, 需要配置 datasource, 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"/> <p class="indent"> |
SpringBoot如何解決這個問題?
Spring Boot自動配置所需的所有內部依賴關係,我們只要執行應用程式即可。
1.如果spring的jar包在類路徑classpath中,SpringBoot將自動配置Dispatcher servlet。如果Hibernate的jar包在類路徑,它將自動配置資料來源。
2.SpringBoot為我們提供了一組預先配置好的啟動專案,這些專案將作為依賴項新增到我們的專案中。
在web應用程式開發過程中,我們需要使用JAR包,並確定要使用的JAR版本,以及如何將它們連線在一起。所有Web應用程式都有類似的需求,例如SpringMVC、JacksonDatabind、Hibernate核心和Log4j(用於日誌記錄)。因此,我們不得不保持所有這些JAR版本相容。
spring boot為了降低這些複雜性,引入了 Spring Boot Starter
starter是一組方便的依賴項,可以在SpringBoot應用程式中包含這些依賴項。為了使用Spring和Hibernate,我們只需在專案中包含Spring-boot-starter-data-jpa依賴項。
下面是啟動spring web項的配置,可以實現RESTful風格API。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <p class="indent"> |
下圖顯示了這一個依賴加入的所有依賴包:
[img index=1]
一旦所需的這些依賴包加入maven的配置pom.xml,作為開發人員,我們就不需要擔心這些依賴項及其版本相容性問題。
下面是常用的starter專案依賴包,如果你要使用相應功能,只要加入相應的starter名稱到pom.xml中即可,如果需要使用到配置或資料庫連線,也只要在專案的application.properties或yaml中配置即可,專案啟動時會自動在類路徑中發現這兩個配置檔案並讀取配置內容注入相應的類中。
spring-boot-starter-web-services: SOAP Web Services
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安全實現驗證和授權。
spring-boot-starter-data-jpa: Spring Data JPA with Hibernate
spring-boot-starter-cache: 啟用 Spring Framework的快取支援
spring-boot-starter-data-rest: 使用 Spring Data REST暴露簡單的 REST 服務,
相關文章
- Spring MVC和Spring Boot的區別 - hackernoonMVCSpring Boot
- 螞蟻開源的 SOFABoot,和 Spring Boot 有啥關係?Spring Boot
- spring cloud+spring boot 電子商務-spring boot 引用方式${}和@@用法與區別CloudSpring Boot
- require和import有啥區別?UIImport
- Spring Boot 2.5.0 重新設計的spring.sql.init 配置有啥用?Spring BootSQL
- 深入淺出,Spring 框架和 Spring Boot 的故事框架Spring Boot
- spring boot與spring mvc的區別是什麼?Spring BootMVC
- SpringBoot和Spring有什麼區別?Spring Boot
- 聊聊Spring Boot幾個版本的區別Spring Boot
- Solon2 與 Spring Boot 的區別Spring Boot
- Spring boot學習(八)Spring boot配置ehcache快取框架Spring Boot快取框架
- Spring框架 - Spring和Spring框架組成Spring框架
- spring boot 框架spring date jpa整合shiroSpring Boot框架
- Spring Boot整合熱部署框架Spring Boot熱部署框架
- 虛擬主機和ECS有啥區別
- spring security為啥是個垃圾框架?Spring框架
- spring MVC的困惑--url-pattern的/和/*有區別SpringMVC
- 使用 Spring Boot 快速構建 Spring 框架應用Spring Boot框架
- spring和springmvc的區別SpringMVC
- Spring Boot日誌框架實踐Spring Boot框架
- 在Spring Boot框架中使用AOPSpring Boot框架
- Spring Boot 非同步框架的使用Spring Boot非同步框架
- Spring Boot:Spring Boot配置MybatisSpring BootMyBatis
- Spring中Filter和Interceptor的區別SpringFilter
- spring、spring MVC、spring BootMVCSpring Boot
- Spring Boot (十三): Spring Boot 小技巧Spring Boot
- Spring Boot + Mybatis + Spring MVC環境配置(四):MVC框架搭建Spring BootMyBatisMVC框架
- Linux和Windows有啥區別?Linux基礎LinuxWindows
- 容器和虛擬機器到底有啥區別?虛擬機
- immer 和useImmer兩個庫有啥區別
- Aliyun Java Initializr 和 Spring 官方的到底有什麼區別?JavaSpring
- (第二講)Spring&Spring MVC&Spring Boot三者之間的區別與聯絡MVCSpring Boot
- Python 中 "is" 與 "==" 有啥區別?Python
- Spring Boot/Spring MVCSpring BootMVC
- Spring Boot —— Spring SecuritySpring Boot
- Spring Boot 應用使用 application.yml 和 application.properties 的區別Spring BootAPP
- Spring Boot:Spring Boot配置SwaggerSpring BootSwagger
- Spring Boot 2.0(八):Spring Boot 整合 MemcachedSpring Boot