1. 項目組是由.NET 轉Java, 這是之前我做技術分享時,整理的提綱,分享給大家
2. SpringBoot2.x 的代碼,會更新在 GitHub,歡迎大家 star, follow, fork
3. https://github.com/wangyushuai?tab=repositories
1.1 Java Dev Enviroment
(JDK + IDEA + maven + tomcat)
與C#環境對比如下:
- JDK:jre( ≈ .net CLR,java運行環境,包含了常用的基本的類庫(net,util,sql,io,javax.servlet)+ jvm) + java工具(javac編譯,jar打包,javadoc文檔,java運行編譯後的代碼)
- IDEA: ≈ Visual studio
- maven : ≈ nuget
- tomcat or resin or Jetty: IIS
補充:java語法與C#非常相近,轉換成本較低,C#語法基本上就是在java語法的基礎上包了一層層語法糖
補充(java編譯器和java解釋器、JVM):
參考博客: https://www.cnblogs.com/chengdabelief/p/6576320.html
JVM:JVM有自己完善的硬件架構,如處理器、堆棧(Stack)、寄存器等,還具有相應的指令系統(字節碼就是一種指令格式)。JVM屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需要生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。JVM是Java平臺無關的基礎。JVM負責運行字節碼:JVM把每一條要執行的字節碼交給解釋器,翻譯成對應的機器碼,然後由解釋器執行。JVM解釋執行字節碼文件就是JVM操作Java解釋器進行解釋執行字節碼文件的過程。
1.2 Learn what you can do with Spring Boot
SpringBoot 輕量級框架,相對於SpringMVC,僅需要較少的配置,並升級了常用的註解(更加輕便),通過SpringBoot 我們可以更加專注於業務,而不是架構。
1.3 Create SpringBoot(快速創建項目)
-
使用官網構建工具自動創建web應用(快速創建)
https://spring.io/projects/spring-boot
-
使用 IDEA 創建(手動創建)
-
目錄文件結構講解
src/main/java:存放代碼
src/main/resources
static: 存放靜態文件,比如 css、js、image, (訪問方式 http://localhost:8080/js/main.js)
templates:存放靜態頁面jsp,html,tpl
config:存放配置文件,application.properties
resources:
- 開發 “SpringBoot HelloWorld” (編寫API常用註解介紹)
1.4 Run (SpringBoot啓動方式和部署war項目到tomcat)
- IDEA RUN (F5, IDEA 可以直接將使用Vs快捷鍵)
- jar啓動方式(用的較少,一般spirng boot是使用war進行部署的)
- mvn install 生成jar包
- java -jar xxx.jar (jar包方式)
- war包方式啓動
- 修改porm.xml,改成war方式
- 修改啓動類,extends SpringBootServletInitializer,並override方法
- mvn clean && mvn install 打包
- 將war包放至 tomcat webapps下
- tomcat/bin startup.bat,
- 訪問localhost:8080/**項目名/**路徑
(注意項目名,tomcat下可以部署多個項目的)
2 DevTool熱部署
引入jar包後,不用重新啓動,IDEA環境下rebuild則可以啓動生效
3 SpringBoot 配置文件
3.1 讀取配置文件
3.1.1 註解讀取
- Controller上面配置
@PropertySource({"classpath":resource.property})
- 增加屬性
@Value("{xxxx}")
private String xx;
3.1.2 配置文件自動映射成實體集
- 配置實體集ServerSettings 需添加註解
@Component
@PropertySource({"classpath:/config/config.properties","classpath:/config/server.properties"})
@ConfigurationProperties(prefix = "ask")
- @Component:會掃描到它
- @PropertySource:注入來源,之所以用大括號,是因爲數組形式,可以注入多個文件
- @ConfigurationProperties: 添加前綴,注意添加前綴之後,注入bean的方式,屬性名稱和配置文件裏面的key一一對應,就不用加@Value 這個註解; 如果不一樣,就要加 @value("${XXX}",xxx表示全名比如: ask.search)
3.2 springboot多環境配置
3.2.1 方式一:spring.profiles.active
- resource
- applicaition.properties
- applicaiton-dev.properties
- applicaiton-pro.properties
在 applicaiton.properties 選擇要激活的文件,如:使用測試配置文件
// 激活測試配置
spring.profiles.active=dev
所以, 需要區分環境的配置,可以防止 application-{}.properties中,通用配置可以放到 applicaition.properties中。
3.2.2 方式二: 通過maven構建多環境配置
4. 異常處理
4.1 SpringBoot2.X服務端異常講解和配置全局異常
- 增加異常處理類 ExceptionHandler
添加 @RestControllerAdvice 註解 或 ControllerAdvice註解
- 在異常處理類中,增加異常處理方法
在方法上添加 @ExceptionHandler(value=CustomerException.class)註解
詳見 CustomerExceptionHandler類及自定義CustomerException類(繼承Excption,扔出異常時使用)
5. 日誌處理
5.1. SpringBoot整合LogBack日誌框架
-
常用處理java的日誌組件 slf4j,log4j,logback,common-logging 等
-
logback介紹:基於Log4j基礎上大量改良,不能單獨使用,推薦配合日誌框架SLF4J來使用
logback當前分成三個模塊:logback-core,logback-classic和logback-access;
logback-core是其它兩個模塊的基礎模塊 -
官網介紹:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-logging
各個組件案例:https://logback.qos.ch/manual/index.html
-
配置文件:classpath:logback-spring.xml
-
調用語法
private Logger logger = LoggerFactory.getLogger(this.getClass());
logger.error("this is a error");
- logback-spring.xml 支持多環境配置
參考博文: https://blog.csdn.net/qianyiyiding/article/details/76565810
<springProfile name="production">
<root level="DEBUG">
<!--<appender-ref ref="FILEERROR"/>-->
<!--<appender-ref ref="FILEWARN"/>-->
<!--<appender-ref ref="FILEINFO"/>-->
<!--<appender-ref ref="DBAPPENDER"/>-->
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="DEBUG">
<!--<appender-ref ref="FILEERROR"/>-->
<!--<appender-ref ref="FILEWARN"/>-->
<!--<appender-ref ref="FILEINFO"/>-->
<!--<appender-ref ref="DBAPPENDER"/>-->
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>