索引
- 過濾指定目錄和文件
- REST風格API
- 路徑變量和注解的簡寫
- YML語法聯(lián)想失效
- 在Java程序中讀取YML中定義的值
- 使用數(shù)據(jù)類裝填YML中的屬性對象
- 引入JUnit進行單元測試
- 引入MyBatisPlus
- 引入Druid數(shù)據(jù)源
- Lombok關(guān)于構(gòu)造方法的使用
- 關(guān)于業(yè)務(wù)層、數(shù)據(jù)層實現(xiàn)的幾個知識點
- 數(shù)據(jù)格式統(tǒng)一
- yml配置文件級別
- SpringBoot多開發(fā)環(huán)境配置
- Logback的相關(guān)用法
過濾指定目錄和文件
Setting > Editor > File Types > Ignored Files and Folders
比如這里我要把.idea目錄過濾了
REST風格API
相較于一般通過getXXX尉共、setXXX作為接口訪問名區(qū)別操作的方式,定義一套REST風格的API可以直接通過訪問類型進行操作的定義篙贸,只需要在相應(yīng)的接口文檔里注明該接口的用途和用法就好
REST風格定義統(tǒng)一的接口訪問路徑
通過GET岖是、POST、PUT、DELETE等請求形式來定義接口的用途
例子:http://localhost/users
GET: 查詢用戶信息
POST: 添加用戶信息
PUT:更新用戶信息
DELETE : 刪除用戶信息
書寫的時候記得使用復(fù)數(shù)詞,如user→users瘦癌、book→books
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private IBookService bookService;
@PostMapping
public ResultData addBook(@RequestBody Book book){
boolean isAdd = bookService.addBook(book);
if(isAdd){
return ResultData.build(1);
}else{
return ResultData.build(0);
}
}
@PutMapping
public ResultData setBook(@RequestBody Book book){
boolean isSet = bookService.setBook(book);
if(isSet){
return ResultData.build(1);
}else{
return ResultData.build(0);
}
}
@DeleteMapping("{id}")
public ResultData delBook(@PathVariable Integer id){
boolean isDel = bookService.delBook(id);
if(isDel){
return ResultData.build(1);
}else{
return ResultData.build(0);
}
}
@GetMapping("{id}")
public ResultData getBook(@PathVariable Integer id){
Book book = bookService.getBook(id);
if(book != null){
return ResultData.build(1,book);
}else{
return ResultData.build(0);
}
}
}
路徑變量和注解的簡寫
路徑變量參數(shù)注解@PathVariable , 需要把RequestMapping中的value修改為 "路徑"+"/"+{具體的參數(shù)名}的形式
@RequestBody和@RequestMapping => 作為類注解就不用每個方法上都寫了
@Controller + @ResponseBody => @RestController
@RequestMapping(method = RequestMothod.POST) => @PostMapping....
YML語法聯(lián)想失效
Project > Project Structure > Facets > 找到對應(yīng)的工程 > 點擊add , 在文件里加入yml/yaml配置文件
在Java程序中讀取YML中定義的值
在yml中配置數(shù)據(jù),并在controller中讀取的方式
簡而言之是${一級屬性名.二級屬性名}
//讀取單級字符串
@Value("${定義yml的值名字}")
//讀取多級字符串跷敬,一般可以指的是類的對象
@Value("${父級.子級.xxxxx}")
//讀取數(shù)組中指定位置的字符串
@Value("${數(shù)組[下標]}")
//讀取一個數(shù)組對象下的數(shù)據(jù) 可以按上面的那個改 后面直接點xxx
@Value("${數(shù)組[下標].xxx屬性}")
在yml中的值引用另一個值讯私,例如引用一個基本的路徑配置信息等
使用{parent}\data
其實跟在Java理用@Value一樣,只是Java要用@Value來標記
使用一個對象取出想要的YML屬性值
為yml資源定義統(tǒng)一的讀取方式西傀,不需要再一個個單獨寫Value斤寇,一個變量就可以讀取想要的數(shù)據(jù)
@Autowired //自動裝配
private Environment env ;
調(diào)用方式:
env.getProperty("一級屬性.二級屬性")
跟Value一樣調(diào)
和使用Value不一樣的是,這里不用寫@{}
使用數(shù)據(jù)類裝填YML中的屬性對象
將yml中的數(shù)據(jù)批量的導(dǎo)入進java程序中
需要將yml的數(shù)據(jù)封裝成一個結(jié)構(gòu)數(shù)據(jù)拥褂,并且java這邊定義一個模型類進行一對一封裝
需要注意參數(shù)名和YML要保持一致
@Component
@ConfigurationProperties(prefix="此處為yml中的對象名")
public class Enterprise{
private String name ;
private Integer age ;
private String[] subject ;
}
因為該數(shù)據(jù)實體需要被Spring管控娘锁,所以對于數(shù)據(jù)實體類,需要掛上@Component注解饺鹃,否則無法進行@Autowrite依賴注入
引入JUnit進行單元測試
JUnit:做java程序測試的
引入JUnit后 其Test包內(nèi)就會自動的把測試配置文件配置好莫秆,測試的工程是默認導(dǎo)入的,不用另外導(dǎo)
void contextLoad(){
這里的內(nèi)容是直接可運行的尤慰,不用做更多的配置
}
@Repository 寫在數(shù)據(jù)層上的 使這個類可以被SpringBoot管理
測試方法:
1馏锡、注入需要測試的對象@Autowrite
2、執(zhí)行要測試的對象對應(yīng)的方法
引入MyBatisPlus
gradle :
compile group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: 'Latest Version'
Maven:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>Latest Version</version>
</dependency>
引入Druid數(shù)據(jù)源
這個東西是給數(shù)據(jù)庫用的伟端,需要手動引入依賴坐標
Maven:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-version}</version>
</dependency>
Gradle:
compile group: 'com.alibaba', name: 'druid-spring-boot-starter', version: 'Latest Version'
配置方式:將原先yml數(shù)據(jù)庫配置中的spring.datasource.xxx改為spring.datasource.druid.xxx
Lombok關(guān)于構(gòu)造方法的使用
@AllArgsConstructor: 全部參數(shù)的構(gòu)造方法
@NoArgsConstructor : 無參構(gòu)造方法(也可以不加杯道,不加默認無參)
關(guān)于業(yè)務(wù)層、數(shù)據(jù)層實現(xiàn)的幾個知識點
- 業(yè)務(wù)層 數(shù)據(jù)層 要分層分開
- 業(yè)務(wù)層接口service包责蝠,下屬定義好需要用到的數(shù)據(jù)接口党巾,如增刪改查,放到光之收藏家的業(yè)務(wù)中去霜医,比如用戶模塊齿拂,此時service中應(yīng)該是getUser、checkLogin肴敛、getUserInfo署海、getForkUser等查詢接口
- 數(shù)據(jù)層impl包,指的是業(yè)務(wù)層接口具體的實現(xiàn)方式医男,這里通常就是要把Mapper等一些東西注入進來了砸狞,并且需要為其class加上@service注解讓其受SpringBoot管理
- 業(yè)務(wù)層方法必須要寫測試用例
- 接口前面要加I,比如IReaderService
數(shù)據(jù)格式統(tǒng)一
定義一個模型類镀梭,類似收藏家項目里的ResultData 刀森,為其增加注解@Data(Lombok)
yml配置文件級別
定義多種級別的配置文件,在銀行類的系統(tǒng)中报账,只允許程序員變更最低等級的配置研底,對于最高等級的配置比如銀行數(shù)據(jù)庫的賬號密碼埠偿,不允許讀寫,所以才有了配置文件分級的概念榜晦。
- file : config/application.yml 【最高級配置文件冠蒋,比如銀行的數(shù)據(jù)庫信息就在此,通常會限制文件夾讀寫】
- file : application.yml 【運行根目錄下的yml文件提供給運維人員編輯查看運維數(shù)據(jù)的時候使用】
- classpath : config/application.yml 【交由后端開發(fā)Leader進行控制的】
- classpath : application.yml 【日常開發(fā)人員使用的配置文件】
SpringBoot多開發(fā)環(huán)境配置
在日常開發(fā)中乾胶,我們總是遇到需要配置一套開發(fā)環(huán)境浊服、測試環(huán)境和生產(chǎn)環(huán)境的情況,SpringBoot考慮到了我們的需求胚吁,為我們提供了多環(huán)境的配置文件旁壮,只需要將application.yml修改為application-prod/dev/test.yml即可妄均。
應(yīng)用的時候可以在服務(wù)器上的JVM或啟動參數(shù)上加上spring.profiles.active = prod 使其強制采用線上環(huán)境衬潦,保證不出錯枢希。在本地的代碼中配置設(shè)置成dev環(huán)境即可报强。
使用配置組洒扎,配置多套配置文件
在代碼開發(fā)的過程中可能會遇到以前的代碼不能動获高,但又要改的情況驯杜,這時候可以在其配置文件后引用新的配置文件膜宋,讓其新屬性覆蓋指定的舊屬性即可
spring:
profiles:
active : dev
group :
"dev": devDB , devMVC ,xxx
最后一個配置會覆蓋前面的配置生效
Logback的相關(guān)用法
使用方式
使用最普通的創(chuàng)建對象的方式初始化logback
Logger log = LoggerFactory.getLogger(xxx.class);引用Lombok窿侈,在類上掛上@Slf4j就行, 加入注解后秋茫,Logger對象就叫l(wèi)og
輸出格式
logging:
pattern :
console : "%d - %m%n"
%d:日期
%m :消息
%n : 換行
這里的日志輸出格式史简,了解一下就好,用的時候再去查
記錄日志文件
logging : file : name : 文件名.log
默認會在你項目的根目錄底下
logging: file-name-pattern : 設(shè)置LOG文件名怎么記錄
例:log.%d.%i.log => log.2022-03-27.0.log 前綴.日期.日志循環(huán)變量.log
logging : max-file-size : 設(shè)置最大文件大小 超過就不計了 一般設(shè)10M 超過了就打不開了