SpringBoot和Spring區別?
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包到我們專案:
依賴關係可分為:
- 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服務就更完整了。