学习springboot基础必备
文章目錄
- 1. springboot項目運行在外部容器
- 2. @ConfigurationProperties(key="person")
- 3. bootstramp.yml文件是什么
- 4. 日期格式轉(zhuǎn)換
- 5. @Autowired注解、@Resource注解的區(qū)別
1. springboot項目運行在外部容器
啟動類應該在最外面的包,即和它同級下的所有類及子包下的類才可以把springBoot來管理,要注意這點。
2. @ConfigurationProperties(key=“person”)
通過注解@ConfigurationProperties(prefix=“配置文件中的key的前綴”)可以將配置文件中的自定義屬性自動與實體進行映
射,注意要和@Bean或@Configure結(jié)合使用,不然會報錯。
application.properties配置如下:
另外還需要個person的Dto,此處不再展示。
演示代碼如下:
3. bootstramp.yml文件是什么
? ? ? ?其實yml和properties文件是一樣的,主要說明application和bootstrap的加載順序。
? ? ? ?Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加載,就像application.yml一樣,但是用于應用程序上下文的引導階段。它通常用于“使用Spring Cloud Config Server時,應在bootstrap.yml中指定spring.application.name和spring.cloud.config.server.git.uri”以及一些加密/解密信息。技術上,bootstrap.yml由父Spring ApplicationContext加載。父ApplicationContext被加載到使用application.yml的之前。
? ? ? ?例如,當使用Spring Cloud時,通常從服務器加載“real”配置數(shù)據(jù)。為了獲取URL(和其他連接配置,如密碼等),您需要一個較早的“bootstrap”配置。因此,您將配置服務器屬性放在bootstrap.yml中,該屬性用于加載實際配置數(shù)據(jù)(通常覆蓋application.yml [如果存在]中的內(nèi)容)。
? ? ? ?當然,在一些情況上不用那么區(qū)分這兩個文件,你只需要使用application文件即可,把全部選項都寫在這里,效果基本是一致的,在不考慮上面的加載順序覆蓋的問題上。
4. 日期格式轉(zhuǎn)換
向前端傳輸字段為LocalDate或者LocalDateTime類型時,我們需要指定格式,否則會發(fā)生解析錯誤。方式有兩種:
1.在對象屬性上增加 @JsonFormat(timezone = “GMT+8”,pattern = “yyyy-MM-dd”)或者@JsonFormat(shape = JsonFormat.Shape.NUMBER)轉(zhuǎn)成時間戳,由前端再轉(zhuǎn)換。
2.利用springmvc的messageConvert,這個對所有的controller都生效,是推薦的方式。
5. @Autowired注解、@Resource注解的區(qū)別
@Resource的作用相當于@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按 byName自動注入罷了。@Resource有兩個屬性是比較重要的,分是name和type,Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。
@Resource裝配順序
1. 如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋出異常
2. 如果指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常
3. 如果指定了type,則從上下文中找到類型匹配的唯一bean進行裝配,找不到或者找到多個,都會拋出異常
4. 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;當找不到與名稱匹配的bean時才按照類型進行裝配
@Autowired 與@Resource的區(qū)別:
- @Autowired與@Resource都可以用來裝配bean. 都可以寫在字段上,或?qū)懺趕etter方法上。
- @Autowired默認按類型裝配(這個注解是屬于spring的),默認情況下必須要求依賴對象必須存在,如果要允許null值,可以設置它的required屬性為false,如:@Autowired(required=false) ,如果我們想使用名稱裝配可以結(jié)合@Qualifier注解進行使用,如下:
- @Resource(這個注解屬于J2EE的),默認安裝名稱進行裝配,名稱可以通過name屬性進行指定,如果沒有指定name屬性,當注解寫在字段上時,默認取字段名進行安裝名稱查找,如果注解寫在setter方法上默認取屬性名進行裝配。當找不到與名稱匹配的bean時才按照類型進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。
推薦使用:@Resource注解在字段上,并且這個注解是屬于J2EE的,減少了與spring的耦合,這樣代碼看起就比較優(yōu)雅。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結(jié)
以上是生活随笔為你收集整理的学习springboot基础必备的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解lombok
- 下一篇: 如何使用Graphics2D在一张图片上