spring boot:簡化新Spring應用的初始搭建以及開發

Spring Boot 是由 Pivotal 團隊提供的全新框架,專注於Spring平臺和第三方開發庫,簡化了基於Spring的產品開發,開發時只需少量的Spring配置就可以完成項目結構的初始搭建。

spring boot:簡化新Spring應用的初始搭建以及開發

Spring Boot使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。

Spring Boot主要有如下核心功能:

1.獨立運行的Spring項目

Spring Boot可以以jar包的形式來運行,運行一個Spring Boot項目我們只需要通過java -jar xx.jar類運行。非常方便。

2.內嵌Servlet容器

Spring Boot可以內嵌Tomcat、Jetty和Undertow,這樣我們無需以war包的形式部署項目。

3.提供starter簡化Maven配置

使用Spring或者SpringMVC我們需要添加大量的依賴,而這些依賴很多都是固定的,這裡Spring Boot 通過starter能夠幫助我們簡化Maven配置。

4.自動配置Spring

5.準生產的應用監控

提供產品級特性,比如指標測量、健康檢查、外部配置等。

6.無代碼生成和xml配置

Spring Boot 系統要求

Spring Boot 2.0.0.RELEASE需要Java 8或9以及 Spring Framework 5.0.4.RELEASE或更高版本。為Maven 3.2+和Gradle 4提供了明確的構建支持。

spring boot搭建web項目

下面正式開始單間一個web項目,使用的工具是eclipse來進行搭建,創建一個maven工程。下面開啟貼圖模式,這前面的過程都是非常的簡單,網上也有大量的參考資料,這裡為了保證一個完整性,開始貼圖。

首先就是很簡單,右擊-->new-->project 選擇maven project

spring boot:簡化新Spring應用的初始搭建以及開發

然後選擇一個默認的配置即可,一般包含的文件都會在裡面。

spring boot:簡化新Spring應用的初始搭建以及開發

這裡填寫好group id其實就是包名,後面也可以更改的,還有artifiact id就是工程名稱,然後單擊完成,就創建一個簡單的maven工程。

spring boot:簡化新Spring應用的初始搭建以及開發

具體的工程目錄如下所示

spring boot:簡化新Spring應用的初始搭建以及開發

按照上面的流程建好了工程之後,可以查看到具體的工程目錄如下,這裡作為一個web項目還缺少如下相關目錄用來存放web文件和配置文件。

[html]view plaincopy

src/main/resources //這個文件夾中存放的是配置文件例如application.properties 配置文件 src/main/webapp //這個文件夾中存放的是前端的文件html,jsp、css

這些文件夾手動添加即可,添加完成之後,具體得到的如下圖所示:

spring boot:簡化新Spring應用的初始搭建以及開發

要想把這個項目跑起來,需要做一下幾個步驟:

1. 首先需要配置一下pom.xml文件,引入spring-boot的相關依賴文件 ,這個是最基本的包,裡面包含了運行的相關組件,例如tomcat,以及其他的jar包

[html]view plaincopy

org.springframework.bootspring-boot-starter-parent1.5.10.RELEASE

[html]view plaincopy

org.springframework.bootspring-boot-starter-web

這樣就能啟動一個spring-boot的web項目,其中內嵌了相關的tomcat服務器,接下里是至關重要的,因為如果不引入下面的jar包,在調整jsp的頁面的時候直接看到的是變成了下載的模式,筆者也是在這個地方鬱悶了半天,百度上找了好多的例子,大部分都沒講到這個方面,故而在這裡重點說明一下

[html]view plaincopy

javax.servlet

jstlorg.apache.tomcat.embedtomcat-embed-jasperprovided

引入了這個jar之後呢,才能對jsp進行解析,編譯,到這裡之後,相關的依賴基本上都算引入完成。接下來要做的是配置application.properties配置文件,這裡面也是有一堆坑在這裡。默認的情況下,這個配置文件是不需要配置的,服務器也可以啟動起來。但是很多同學在搭建玩項目之後,進行的跳轉的時候,不是報找不到頁面,就是解析錯誤。因為在這個配置文件中需要指定一下需要跳轉的jsp頁面的路徑,即,具體在哪個文件夾下面,添加如下配置:

[html]view plaincopy

#默認的位置是src/main/webapp 這裡可以更換,比如/page/ 那麼目錄就變成了src/main/webapp/pages spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp

這裡面還有一個坑,在新版本的spring boot中是按上面的配置,但是在老的版本中是如下的用法,名稱不一樣,這裡需要注意一下,否則對於新學者來說,又要懵逼半天了...

[html]view plaincopy

spring.view.prefix=/ spring.view.suffix=.jsp

然後需要創建jsp的頁面了,在添加的源碼包src/main/webapp的下面添加jsp文件,注意,webapp是默認的路徑,如果想繼續分類,則可以在該文件夾下面進行添加,比如說添加一個pages文件夾,jsp文件都放在這裡面,那麼spring.mvc.view.prefix=/pages/ 否則會找不到對應的文件。大體的目錄結構如下所示:

[html]view plaincopy

|----src/main/webapp |------index.jsp |------pages |----page.index

對於jsp頁面中,就寫入一點簡單的測試語句就行了

[html]view plaincopy

Insert title here hello world!!! name=${name } welcome!

好了,上面的步驟都完成之後,這裡,只要編寫簡單的Controller即可,這裡面提供了兩個跳轉路徑一個是/home,一個是/home/page,一個是攜帶返回值,一個沒有返回相應結果。

[java]view plaincopy

@Controllerpublicclass HomeController { @RequestMapping(value="/home") public String home(){ System.out.println("redirect to home page!"); return"index"; } @RequestMapping(value="/home/page") @ResponseBodypublic ModelAndView goHome(){ System.out.println("go to the home page!"); ModelAndView mode = new ModelAndView(); mode.addObject("name", "zhangsan"); mode.setViewName("index"); return mode; } }

然後在App類中,添加如下代碼:

[java]view plaincopy

@SpringBootApplicationpublicclass App { publicstaticvoid main( String[] args ) { SpringApplication.run(App.class); } }

寫好上面的Controller之後,在App類上面右擊,選擇Run Application執行main函數,看到控制檯輸出如下,說明spring boot啟動成功

[plain]view plaincopy

. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.10.RELEASE) 2018-03-01 17:32:42.069 INFO 64878 --- [ main] com.spring.example.App : Starting App on fhldeMacBook-Air.local with PID 64878 (/Users/fhl/Documents/workspace1/spring-boot-example/target/classes started by fhl in /Users/fhl/Documents/workspace1/spring-boot-example) 2018-03-01 17:32:42.074 INFO 64878 --- [ main] com.spring.example.App : No active profile set, falling back to default profiles: default 2018-03-01 17:32:42.175 INFO 64878 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1d8299fd: startup date [Thu Mar 01 17:32:42 CST 2018]; root of context hierarchy 2018-03-01 17:32:45.865 INFO 64878 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 2018-03-01 17:32:45.892 INFO 64878 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2018-03-01 17:32:45.895 INFO 64878 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.27 2018-03-01 17:32:46.530 INFO 64878 --- [ost-startStop-1] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 2018-03-01 17:32:46.542 INFO 64878 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2018-03-01 17:32:46.543 INFO 64878 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4371 ms 2018-03-01 17:32:46.809 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2018-03-01 17:32:46.818 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2018-03-01 17:32:47.838 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1d8299fd: startup date [Thu Mar 01 17:32:42 CST 2018]; root of context hierarchy 2018-03-01 17:32:48.136 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/home]}" onto public java.lang.String com.spring.example.controller.HomeController.home() 2018-03-01 17:32:48.137 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/home/page]}" onto public org.springframework.web.servlet.ModelAndView com.spring.example.controller.HomeController.goHome() 2018-03-01 17:32:48.150 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2018-03-01 17:32:48.152 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2018-03-01 17:32:48.256 INFO 64878 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-01 17:32:48.256 INFO 64878 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-01 17:32:48.574 INFO 64878 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-01 17:32:49.556 INFO 64878 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-03-01 17:32:49.857 INFO 64878 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2018-03-01 17:32:49.867 INFO 64878 --- [ main] com.spring.example.App : Started App in 8.378 seconds (JVM running for 8.905) 2018-03-01 17:32:52.093 INFO 64878 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet' 2018-03-01 17:32:52.093 INFO 64878 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started 2018-03-01 17:32:52.123 INFO 64878 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 29 ms

然後打開瀏覽器,輸入地址http://127.0.0.1:8080/home/page

看到返回結果如下所示,則表示跳轉成功:

spring boot:簡化新Spring應用的初始搭建以及開發

————————————————————————————————

SSL證書是HTTP明文協議升級HTTPS加密協議的重要渠道,是網絡安全傳輸的加密通道。關於更多SSL證書的資訊,請關注數安時代(GDCA)。GDCA致力於網絡信息安全,已通過WebTrust 的國際認證,是全球可信任的證書籤發機構。GDCA專業技術團隊將根據用戶具體情況為其提供最優的產品選擇建議,並針對不同的應用或服務器要求提供專業對應的HTTPS解決方案。


分享到:


相關文章: