Java開發學習心得(一):SSM環境搭建
有一點.NET的開發基礎,在學校學過基礎語法,對JAVA有點興趣,就簡單學習了一下,記錄一下從哪些方面入手的,暫時不打算深入到原理方面,先簡單搭下環境看看,所以有些地方可能講得不慎準確。
1 SSM框架
從網上的討論來看,SSM框架似乎正在慢慢被Spring Cloud的取代。
1.1 Spring Framework
Spring是一個開源的Java/Java EE全功能棧(full-stack)的應用程序框架,以Apache License 2.0開源許可協議的形式發布,也有.NET平臺上的移植版本。該框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一書中的代碼,最初由Rod Johnson和Juergen Hoeller等開發。
Spring Framework提供了一個簡易的開發方式,這種開發方式,將避免那些可能致使底層代碼變得繁雜混亂的大量的屬性文件和幫助類。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。 如果學習JAVA Spring,這兩個東西應該是繞不開的,但是暫時理解不深刻,后面準備深入到代碼實現層面,與.NET進行一些比較。
控制反轉 IoC(Inversion of Control)
在IoC出現以前,組件之間的協調關系是由程序內部代碼來控制的,或者說,以前我們使用New關鍵字來實現兩組間之間的依賴關系的。 這種方式就造成了組件之間的互相耦合。IoC(控制反轉)就是來解決這個問題的,它將實現組件間的關系從程序內部提到外部容器來管理。 也就是說,由容器在運行期將組件間的某種依賴關系動態的注入組件中。
依賴注入(Dependency Injection):這就是DI,字面上理解,依賴注入就是將服務注入到使用它的地方。對象只提供普通的方法讓容器去決定依賴關系,容器全權負責組件的裝配,它會把符合依賴關系的對象通過屬性(JavaBean中的setter)或者是構造子傳遞給需要的對象。
相對于IoC而言,依賴注入(DI)更加準確地描述了IoC的設計理念。所謂依賴注入,即組件之間的依賴關系由容器在應用系統運行期來決定,也就是由容器動態地將某種依賴關系的目標對象實例注入到應用系統中的各個關聯的組件之中。
Spring核心思想,IoC與DI詳解
面向切面編程 AOP(aspect-oriented programming)
POP面向過程程序設計
OOP面向對象的程序設計
微服務
關于 Spring AOP (AspectJ) 你該知曉的一切
1.2 Spring MVC
Spring MVC屬于SpringFrameWork的后續產品,已經融合在Spring Web Flow里面。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。
1.2.1 spring boot
Spring Boot就是Spring,它做了那些沒有它你也會去做的Spring Bean配置。它使用“習慣優于配置”(項目中存在大量的配置,此外還內置了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的項目快速運行起來。使用Spring Boot很容易創建一個獨立運行(運行jar,內嵌Servlet容器)、準生產級別的基于Spring框架的項目,使用Spring Boot你可以不用或者只需要很少的Spring配置。
正常的Spring MVC構建需要
- 一個項目結構,其中有一個包含必要依賴的Maven或者Gradle構建文件,最起碼要有Spring MVC和Servlet API這些依賴。
- 一個web.xml文件(或者一個WebApplicationInitializer實現),其中聲明了Spring的DispatcherServlet。
- 一個啟動了Spring MVC的Spring配置
- 一控制器類,以“hello World”相應HTTP請求。
- 一個用于部署應用程序的Web應用服務器,比如Tomcat。
spring boot 特點
- 自動配置:針對很多Spring應用程序常見的應用功能,Spring Boot能自動提供相關配置
- 起步依賴:告訴Spring Boot需要什么功能,它就能引入需要的庫。
- 命令行界面:這是Spring Boot的可選特性,借此你只需寫代碼就能完成完整的應用程序,無需傳統項目構建。
- Actuator:讓你能夠深入運行中的Spring Boot應用程序,一套究竟。
使用Spring Boot的方法之一:Spring Initializr
- 通過Web構建 http://start.spring.io/

- IDEA
- 目前IDEA只支持Java8的JDK

2.Apache Maven,是一個軟件(特別是Java軟件)項目管理及自動構建工具,由Apache軟件基金會所提供。基于項目對象模型(Project Object Model,POM)概念,Maven利用一個中央信息片斷能管理一個項目的構建、報告和文檔等步驟(生命周期)。

- 選擇需要的依賴

- pom.xml
<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><!-- 添加classpath依賴 --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 開發者工具,當classpath下有文件更新自動觸發應用重啟 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!-- maven編譯插件,用于創建可執行jar包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
構建啟動的三種方式
- 在IDE(或者命令行工具中的java)啟動main函數,IDE中一般都自帶Maven,能夠幫助我們下載安裝Maven依賴。

2. 運行mvn spring-boot:run命令,但是此種方法要求你在本地環境中必須安裝Maven 使用命令行有兩種方式,一種是直接找到Maven項目視圖中的spring boot啟動命令直接運行


另一種是直接輸入命令

3. 使用mvn package命令進行打包,生成一個可以直接運行的 JAR 文件,路徑是項目文件中的target目錄,使用“java -jar”命令就可以直接運行。


不管使用哪種方法都可以啟動項目,然后訪問http://localhost:8080就可以打開網站看到控制器里面的內容了
應用入口
package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@SpringBootApplication
public class DemoApplication {@RequestMapping("/")public String index(){return "Hello Spring Boot";}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}
對main函數所在的類進行修改,時期能接收Http請求并返回內容。
- main()方法啟動了一個HTTP服務器程序,這個程序默認監聽8080端口,并將HTTP請求轉發給我們的應用來處理
- @Controller標注表示Application類是一個處理HTTP請求的控制器,該類中所有被@RequestMapping標注的方法都會用來處理對應URL的請求,@ResponseBody標注告訴Spring MVC直接將字符串作為Web響應(Reponse Body)返回,如果@ResponseBody標注的方法返回一個對象,則會自動將該對象轉換為JSON字符串返回
- index()方法上包含@GetMapping("/")標注,意味著在瀏覽器中訪問http://localhost:8080/(不考慮協議、host和port信息后的路徑為"/")后瀏覽器發送的請求會交給該方法進行處理
- index()方法直接返回一個字符串,那么相當于直接將字符串"Hello World"作為HTTP請求的響應返回給瀏覽器,于是我們在瀏覽器中可以看到相應的返回值
- 一個啟動了Spring MVC的Spring配置
- 一控制器類,以“hello World”相應HTTP請求。
- 一個用于部署應用程序的Web應用服務器,比如Tomcat。