深入淺析Spring-boot-starter常用依賴模塊
Spring-boot的2大優(yōu)點(diǎn):
1.基于Spring框架的“約定優(yōu)先于配置(COC)”理念以及最佳實(shí)踐之路。
2.針對(duì)日常企業(yè)應(yīng)用研發(fā)各種場(chǎng)景的Spring-boot-starter自動(dòng)配置依賴模塊,且“開(kāi)箱即用”(約定spring-boot-starter- 作為命名前綴,都位于org.springframenwork.boot包或者命名空間下)。
應(yīng)用日志和spring-boot-starter-logging
常見(jiàn)的日志系統(tǒng)大致有:java.util默認(rèn)提供的日志支持,log4j,log4j2,commons logging,下面的spring-boot-starter-logging也是其中的一種。
maven依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>
springBoot將使用logback作為應(yīng)用日志的框架,程序啟動(dòng)時(shí),由org.springframework.boot.logging-Logging-Application-Lisetener根據(jù)情況初始化并使用。
如果要想改變springBoot提供的應(yīng)用日志設(shè)定,可以通過(guò)一下原則:
遵循logback的約定,在classpath中使用自己定制的logback.xml配置文件。
在文件系統(tǒng)的任意一個(gè)位置提供自己的logback.xml配置文件,然后通過(guò)logging.config配置項(xiàng)指向這個(gè)配置文件然后引用它,例如在application.properties中指定如下的配置:
logging.config=/{some.path.you.defined}/any-logfile-name-I-like.log}
快速web應(yīng)用開(kāi)發(fā)與spring-boot-starter-web
maven依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
在當(dāng)下項(xiàng)目運(yùn)行mvn spring-boot:run就可以直接啟用一個(gè)嵌套了tomcat的web應(yīng)用。
如果沒(méi)有提供任何服務(wù)的Cotroller,訪問(wèn)任何路徑都會(huì)返回一個(gè)springBoot默認(rèn)的錯(cuò)誤頁(yè)面(Whitelabel error page)。
嵌入式Web容器層面的約定和定制
spring-boot-starter-web默認(rèn)使用嵌套式的Tomcat作為Web容器對(duì)外提供HTTP服務(wù),默認(rèn)端口8080對(duì)外監(jiān)聽(tīng)和提供服務(wù)。
我們同樣可以使用 spring-boot-starter-jetty 或者 spring-boot-starter-undertow 作為Web容器。
想改變默認(rèn)的配置端口,可以在application.properties中指定:
server.port = 9000(the port number you want)
類似的配置還有:
server.address server.ssl.* server.tomcat.*
如果上訴仍然沒(méi)有辦法滿足要求,springBoot支持對(duì)嵌入式的Web容器實(shí)例進(jìn)行定制,可以通過(guò)向IoC容器中注冊(cè)一個(gè)EmbeddedServletContainerCustomizer類型的組件來(lái)對(duì)嵌入式的Web容器進(jìn)行定制
public class UnveilSpringEmbeddedTomcatCustomizer implements EmbeddedServletContainer{ public void customize(ConfigurableEmbeddedServletContainer container){ container.setPort(9999); container.setContextPath("C\\hello"); ... } }
數(shù)據(jù)訪問(wèn)與spring-boot-starter-jdbc
maven依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
默認(rèn)情況下,當(dāng)我們沒(méi)有配置任何DataSource,SpringBoot會(huì)為我們自動(dòng)配置一個(gè)DataSource,這種自動(dòng)配置的方式一般適用于測(cè)試,開(kāi)發(fā)還是自己配置一個(gè)DataSource的實(shí)例比較好。
如果我們的工程只依賴一個(gè)數(shù)據(jù)庫(kù),那么,使用DataSource自動(dòng)配置模塊提供的參數(shù)是最方便的:
spring.datasource.url=jdbc:mysql://{datasource host}:3306/{databaseName} spring.datasource.username={database username} spring.datasource.passwd={database passwd}
還會(huì)自動(dòng)配置的有:JdbcTemplate DateSourceTransactionManager等,我們只要在使用的時(shí)候注入(@Autowired)就好了
此外,SpringBoot還支持的數(shù)據(jù)庫(kù)有spring-boot-data-jpa spring-boot-data-mongodb
spring-boot-starter-aop應(yīng)用及其使用場(chǎng)景
AOP:Aspect Oriented Programming,面向切面編程
maven依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
spring-boot-starter-aop主要由2部分組成:
1.位于spring-boot-autoconfigure的org.sringframework.boot.autoconfigure.aop.AopAutoConfiguration提供的@Configuration配置類和相應(yīng)的配置項(xiàng),即下面的2個(gè)配置項(xiàng):
spring.aop.auto=true spring.aop.proxy-target-class=false
2.spring-boot-starter-aop模塊提供了針對(duì)spring-aop aspectjrt 和aspectjweaver的依賴
應(yīng)用安全與spring-boot-starter-security //todo
總結(jié)
以上所述是小編給大家介紹的Spring-boot-starter常用依賴模塊,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringBoot中多環(huán)境yml的配置與打包問(wèn)題
這篇文章主要介紹了SpringBoot中多環(huán)境yml的配置與打包問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09spring-boot-starter-validation?校驗(yàn)參數(shù)的實(shí)現(xiàn)
參數(shù)校驗(yàn)在很多地方都可以用到,本文主要介紹了spring-boot-starter-validation?校驗(yàn)參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04java 下執(zhí)行mysql 批量插入的幾種方法及用時(shí)
java 下執(zhí)行mysql 批量插入的幾種方法及用時(shí),1000次插入方法的比較。2013-04-04Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊問(wèn)題
這篇文章主要介紹了Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊,簡(jiǎn)單介紹了lock鎖及鎖的底層知識(shí),結(jié)合案例給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Java中@DateTimeFormat注解與@JsonFormat注解的使用方式
這篇文章主要介紹了Java中@DateTimeFormat注解與@JsonFormat注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08解決myBatis中openSession()自動(dòng)提交的問(wèn)題
在學(xué)習(xí)MySQL過(guò)程中,發(fā)現(xiàn)插入操作自動(dòng)提交,問(wèn)題原因可能是myBatis中的openSession()方法設(shè)置了自動(dòng)提交,或者是MySQL的默認(rèn)引擎設(shè)置為不支持事務(wù)的MyISAM,解決辦法包括更改myBatis的提交設(shè)置或?qū)ySQL表的引擎改為InnoDB2024-09-09MybatisPlus修改時(shí)空字段無(wú)法修改的解決方案
這篇文章主要介紹了MybatisPlus修改時(shí)空字段無(wú)法修改的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java代碼實(shí)現(xiàn)對(duì)properties文件有序的讀寫(xiě)的示例
本篇文章主要介紹了Java代碼實(shí)現(xiàn)對(duì)properties文件有序的讀寫(xiě)的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11