【SpringBoot】基礎(chǔ)+運維知識點記錄

索引

  • 過濾指定目錄和文件
  • 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目錄過濾了

過濾后.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中的值引用另一個值讯私,例如引用一個基本的路徑配置信息等
使用{屬性名}進行應(yīng)用 path :{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ù)庫的賬號密碼埠偿,不允許讀寫,所以才有了配置文件分級的概念榜晦。

  1. file : config/application.yml 【最高級配置文件冠蒋,比如銀行的數(shù)據(jù)庫信息就在此,通常會限制文件夾讀寫】
  2. file : application.yml 【運行根目錄下的yml文件提供給運維人員編輯查看運維數(shù)據(jù)的時候使用】
  3. classpath : config/application.yml 【交由后端開發(fā)Leader進行控制的】
  4. 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 超過了就打不開了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肛著,一起剝皮案震驚了整個濱河市圆兵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枢贿,老刑警劉巖殉农,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異局荚,居然都是意外死亡超凳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門耀态,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轮傍,“玉大人,你說我怎么就攤上這事茫陆〗痿铮” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵簿盅,是天一觀的道長挥下。 經(jīng)常有香客問我揍魂,道長,這世上最難降的妖魔是什么棚瘟? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任现斋,我火速辦了婚禮,結(jié)果婚禮上偎蘸,老公的妹妹穿的比我還像新娘庄蹋。我一直安慰自己,他們只是感情好迷雪,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布限书。 她就那樣靜靜地躺著,像睡著了一般章咧。 火紅的嫁衣襯著肌膚如雪倦西。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天赁严,我揣著相機與錄音扰柠,去河邊找鬼。 笑死疼约,一個胖子當著我的面吹牛卤档,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播程剥,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼劝枣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了倡缠?” 一聲冷哼從身側(cè)響起哨免,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昙沦,沒想到半個月后琢唾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡盾饮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年采桃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丘损。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡普办,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出徘钥,到底是詐尸還是另有隱情衔蹲,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站舆驶,受9級特大地震影響橱健,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沙廉,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一拘荡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撬陵,春花似錦珊皿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至草添,卻和暖如春溢吻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背果元。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留犀盟,地道東北人而晒。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像阅畴,于是被迫代替她去往敵國和親倡怎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容