寫給.NET程序員的SpringBoot幫助文檔

	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):

image

參考博客: 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(快速創建項目)

  1. 使用官網構建工具自動創建web應用(快速創建)

    https://spring.io/projects/spring-boot

  2. 使用 IDEA 創建(手動創建)

  3. 目錄文件結構講解

src/main/java:存放代碼
src/main/resources
    static: 存放靜態文件,比如 css、js、image, (訪問方式 http://localhost:8080/js/main.js)
    templates:存放靜態頁面jsp,html,tpl
    config:存放配置文件,application.properties
    resources:
  1. 開發 “SpringBoot HelloWorld” (編寫API常用註解介紹)

1.4 Run (SpringBoot啓動方式和部署war項目到tomcat)

  1. IDEA RUN (F5, IDEA 可以直接將使用Vs快捷鍵)
  2. jar啓動方式(用的較少,一般spirng boot是使用war進行部署的)
  • mvn install 生成jar包
  • java -jar xxx.jar (jar包方式)
  1. 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 註解讀取

  1. Controller上面配置
@PropertySource({"classpath":resource.property})
  1. 增加屬性
@Value("{xxxx}")
private String xx;

3.1.2 配置文件自動映射成實體集

  1. 配置實體集ServerSettings 需添加註解

@Component
@PropertySource({"classpath:/config/config.properties","classpath:/config/server.properties"})
@ConfigurationProperties(prefix = "ask")
  1. @Component:會掃描到它
  2. @PropertySource:注入來源,之所以用大括號,是因爲數組形式,可以注入多個文件
  3. @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服務端異常講解和配置全局異常

  1. 增加異常處理類 ExceptionHandler

添加 @RestControllerAdvice 註解 或 ControllerAdvice註解

  1. 在異常處理類中,增加異常處理方法

在方法上添加 @ExceptionHandler(value=CustomerException.class)註解
詳見 CustomerExceptionHandler類及自定義CustomerException類(繼承Excption,扔出異常時使用)

5. 日誌處理

5.1. SpringBoot整合LogBack日誌框架

  1. 常用處理java的日誌組件 slf4j,log4j,logback,common-logging 等

  2. logback介紹:基於Log4j基礎上大量改良,不能單獨使用,推薦配合日誌框架SLF4J來使用
    logback當前分成三個模塊:logback-core,logback-classic和logback-access;
    logback-core是其它兩個模塊的基礎模塊

  3. 官網介紹:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-logging

    各個組件案例:https://logback.qos.ch/manual/index.html

  4. 配置文件:classpath:logback-spring.xml

  5. 調用語法

 private Logger logger  = LoggerFactory.getLogger(this.getClass());
 logger.error("this is a error");
  1. 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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章