@Configuration結合@Bean實現對象的配置
前提:最近項目中需要做支付接口,支付寶以及微信支付,本文並不介紹如何寫支付接口,而是通過這個示例講解配置應該怎么寫,項目中使用的是Kotlin語言
眾所周知:Spring中的注解分為兩種:注冊類 和 使用類,且Spring默認是單例模式,記住這兩點很重要。
(1)注冊類包括:Controller、Service、Repository、Configuration、Component、Bean等,這些注解告知了Spring容器這些Bean的種類,讓他們各司其職。其中@Bean注解告知Spring容器:我現在要給你一個我已經配置好了的對象(即Bean),以后無論在哪使用這個Bean,都無需再進行配置了。-- 為什么會這樣呢?是因為Spring的Bean默認是單例模式的,內存中只會存儲一個這樣的對象,熟悉JVM內存區域的都知道,對象均存儲在堆內存中,一個對象分為:對象頭、實例數據、對齊填充。其中實例數據就存放了對象中的內容數據,所以每次要用到相關對象時,Spring自動將已經注冊且配置好的Bean給你使用。
(2)使用類包括:@Resource、@AutoWired等,這兩個注解主要將依賴注入到Bean當中,使用時無需使用new關鍵字。
在Spring整個項目的運行過程中,是通過一個個的Bean互相協調工作的,特別是當你使用第三方組件的時候(比如redis),使用SpringBoot的注解(@Configuration)可以輕松實現Java語言進行配置,不用再寫繁瑣的Xml文件,這里只介紹使用注解方式進行配置
SpringBoot的配置可以分為兩類 :運行配置 和 第三方組件配置
這兩個配置會將某些配置暴露出來給程序員在配置文件中配置,比如在yml文件中配置端口號,或者當集成了Hibernate等組件時,會讓你配置數據源等。比如下圖:
紅色方框是你集成SpringBoot的某個組件后,SpringBoot將這些組件的配置暴露出來讓你填的。同樣,可以看到可以看到圖中的redis,這里SpringBoot沒有將他們暴露出來,所以我們需要自己去配置:
接下來,展示如何配置支付接口的信息
這里我用了zookeeper作配置中心,另一篇博文會有介紹,但不妨礙我講實現方法
首先將配置文件中的信息使用@Value注入到字段中,這里因為使用的是zookeeper,所以只在配置文件中配置了zookeeper的相關信息。
然后通過@Bean注解,告知Spring容器,我會返回給你一個對象這個對象是我已經配置好了的對象,以后使用的時候就不用再配置了。
這里是使用這個Bean的地方,通過@Resource注入依賴