專案建立
使用IDEA的Spring Initializr工具建立Spring Boot專案,建立時Dependencies中只選擇Web欄下web這一項。建立成功後先刪除專案目錄下不需要的.mvn、mvnw、mvnw.cmd這些檔案。
專案啟動
1、IDE中啟動
2、命令列終端中啟動
到專案目錄下:
1)mvn spring-boot:run
2)先編譯:mvn install
進入target目錄:cd target
檢視目錄下檔案:div
再執行jar包:java -jar filename.jar
這種方式可選擇配置檔案,在其後加引數,如下例:
java -jar filename.jar --spring .profiles.active=prod
打包時會進行單元測試,若需要跳過單元測試,則命令如下:
mvn clean package -Dmaven.test.skip=true
配置檔案
若在配置檔案中定義了變數,例:
name1: value1
name2: value2
name3: "name1: ${name1},name2: ${name2}"
複製程式碼
在controller中使用的方式為:
@Value("${name}")
private String name;
複製程式碼
或
prefix:
property1: value1
property2: value2
複製程式碼
再建立一個物件屬性類,加上註解:
@Component
@ConfigurationProperties(prefix = "prefix")
複製程式碼
在controller中通過物件來呼叫
配置mysql
在配置檔案中配置mysql,例:(配置檔案預設使用properties檔案,但推薦使用yml檔案)
spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/db?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
複製程式碼
JPA
JPA(Java Persistence API)定義了一系列物件***持久化***的標準,目前實現這一規範的產品有Hibernate、TopLink等。
Spring-Data-Jpa是Spring對Hibernate的一個整合。
新增spring-boot-starter-data-jpa依賴包以及要使用的mysql依賴包mysql-connector-java。
Java Persistence API定義了一種定義,可以將常規的普通Java物件(有時被稱作POJO)對映到資料庫。
建立物件類,該物件類需要新增一些註釋,
@Entity——指名這是一個實體Bean
@Table——指定了Entity所要對映的資料庫表,其中@Table.name()用來指定對映表的表名。如果預設@Table註釋,系統預設採用類名作為對映表的表名。
@Id——指定主鍵,id一般還要指定自增,需要@GeneratedValue註釋。
注:SpringBoot的@GeneratedValue 是不需要加引數的,但是如果資料庫控制主鍵自增(auto_increment), 不加引數就會報錯.
@GeneratedValue(strategy=GenerationType.IDENINY)
PS:@GeneratedValue註解的strategy屬性提供四種值: -AUTO主鍵由程式控制, 是預設選項 ,不設定就是這個 -IDENTITY 主鍵由資料庫生成, 採用資料庫自增長, Oracle不支援這種方式 -SEQUENCE 通過資料庫的序列產生主鍵,MYSQL不支援 -Table 提供特定的資料庫產生主鍵, 該方式更有利於資料庫的移植
這樣資料庫中就會建立對應表,表中的欄位與物件屬性欄位一一對映
JpaRepository 是繼承自 PagingAndSortingRepository 的針對 JPA 技術提供的介面,它在父介面的基礎上,提供了其他一些方法,比如 flush(),saveAndFlush(),deleteInBatch() 等。如果有這樣的需求,則可以繼承該介面。
只需要建立繼承JpaRepository介面的物件倉儲介面,就可以通過這個物件倉儲介面直接使用JpaRepository介面提供的方法。使我們幾乎不需要寫一條sql語句,大大簡化了操作。可在介面內新增查詢方法(方法名要規範,如下):findByProperty (type Property);
事務管理——@Transactional
表單校驗——@Valid
面向切面程式設計AOP
首先在pom檔案中引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
複製程式碼
使用例:建立aspect包,在其下建立處理http請求的類,使用@Aspect和@Component註解,例:
@Pointcut("execution(public * com.imooc.controller.GirlController.*(..))")
public void log() {
}
@Before("log()")
public void doBefore(){
//dosomethig
}
@After("log()")
public void doAfter() {
//dosomethig
}
複製程式碼
使用logger列印資訊 在類中新增
private final static Logger logger = LoggerFactory.getLogger(ClassName.class);
複製程式碼
輸出語句為:logger.info(),例:
專案結構
aspect-切面層,統一請求處理 controller-控制層,調研service實現業務 domain-領域模型層,放置對映資料庫表的簡單java物件和通用的返回結果物件 enums-放置錯誤資訊列舉類 exception-放置自定義exception類 handle-異常捕獲層,使用了@ControllerAdvice註解和@ExceptionHandler註解用於全域性異常的處理 properties-配置層,對應配置檔案中配置的屬性物件 repository-倉儲層,放置繼承JpaRepository介面的repository類 service-業務層,處理業務邏輯 utils-工具層,例如實現統一返回結果型別
參考:
慕課課程《Spring Boot進階之Web進階》+《2小時學習Spring Boot》