一個(gè)包含了眾多工具方法的 IoC 容器
目前創(chuàng)新互聯(lián)公司已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、鶴山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。okk~~分析一下這句話意思,眾多方法,IoC 是形容詞,容器是名詞 ->
眾多方法:比如一個(gè)類里有許多方法, 容器:存儲的東西 重點(diǎn)就是IoC是什么?
IoC ->Inversion of Control 控制反轉(zhuǎn) ->對象的生命周期 ->控制權(quán): 由程序猿 變?yōu)?Spring IoC
簡單來說 Java里的對象的創(chuàng)造和銷毀都是被程序猿掌控的, 但是IoC的話 就變了, 掌控這些的不是程序猿了,而是Spring
2.2 意義所以,把對象的生命周期的控制權(quán)交出去了,有什么好處?
~解耦合!!!!
每個(gè)對象都要程序猿創(chuàng)建,如果1的創(chuàng)建需要2,2的創(chuàng)建需要3..... 那么當(dāng)代碼出現(xiàn)異常,76出現(xiàn)了bug - >前面的1到75就會都有問題產(chǎn)生 ->所以這個(gè)時(shí)候,好處顯而易見
~并且,對象的生命周期交給IoC維護(hù), 作為程序猿無需關(guān)注
其實(shí)IoC只是一個(gè)思想, 那么具體的實(shí)現(xiàn)其實(shí)是 DI
DI ->Dependency Injection 依賴注入
IoC DI 從不同的維度描述了同一件事 比如->我的計(jì)劃和實(shí)際操作(我要學(xué)會一門樂器->鋼琴十級了現(xiàn)在)
spring.xml的代碼
pom.xml
org.springframework spring-context5.2.3.RELEASE org.springframework spring-beans5.2.3.RELEASE
1.1.3創(chuàng)建spring對象
1.1.4將對象配置到spring中
1.1.5得到spring對象
1.1.6獲取spring對象
1.1.7使用一下
1.2. 注意事項(xiàng)
1.3. ApplicationContext BeanFactory區(qū)別ApplicationContext BeanFactory 區(qū)別:
* 相同:
都可以實(shí)現(xiàn)從容器中獲取 bean, 都提供了 getBean的方法
* 不相同:
* 1.ApplicationContext 是 BeanFactory 的子類,
* BeanFactory只提供了基礎(chǔ)訪問 Bean的方法
* ApplicationContext 除了擁有 BeanFactory的所有功能外,還提供了更多的方法,對國際化的支持,資源訪問支持...
* 2.性能方面
* BeanFactory 按需加載 Bean
* ApplicationContext餓漢模式, 創(chuàng)建的時(shí)候所有 Bean都加載了(貌似是智能的,電腦空間夠,才行,不夠的話,還是按需加載)
2.簡單的創(chuàng)建 2.1創(chuàng)建 - 5大類注解org.springframework spring-context5.2.3.RELEASE org.springframework spring-beans5.2.3.RELEASE
2.1.2 5大類注解
2.1.2.1 5大類注解@Controller 控制器 業(yè)務(wù)邏輯層
@Service 服務(wù) 服務(wù)層
@Repository 倉庫 持久層
@Configuration 配置 配置層
@Component 組件
2.1.2.2 5大類注解的意義@Configuration ->@Controller 控制器 (前端參數(shù)的校驗(yàn)) ->@Service(數(shù)據(jù)的組裝,接口的調(diào)用) ->@Repository(和數(shù)據(jù)庫進(jìn)行交互)
可以讓代碼可讀性提高, 讓程序員快速知道當(dāng)前類的用途
比如 Java里的 @Override 看到就知道被標(biāo)注的方法重載了父類的方法
2.1.2.3 5大類注解的關(guān)系其他四個(gè)類本身是屬于 @Component 的“?類”--看源碼
2.1.3 解釋public static void main(String[] args) {
String name1 = "user";
String name2 = "USER";
System.out.println(Introspector.decapitalize(name1));
System.out.println(Introspector.decapitalize(name2));
}
2.2創(chuàng)建-使用方法注解@Bean
2.2.1使用方法注解@Bean
2.2.2 重命名 Bean設(shè)置 name 屬性給 Bean 對象進(jìn)?重命名
2.2.3 注意事項(xiàng)* Bean 的命名規(guī)則 :
* 當(dāng)沒有設(shè)置 name屬性時(shí), 那么 bean的默認(rèn)名稱時(shí)方法名
* 通過重命名的 name屬性對應(yīng)值來獲取后, 只能用重命名, 不能再用方法名
name={} 可以省略
* Bean 的命名可以起多個(gè)名字 :
但是會有問題--同?類型多個(gè) @Bean 報(bào)錯(cuò)
* @Bean 將一個(gè)類型的對象注入多次
* 解決方案三個(gè)
* 1. 精確的描述 bean的名稱
* 2. 使用 @Resource設(shè)置 name的方法來重新命名注入對象 @Resource(name="user")
* 3. 使用 @Autowired+ @Qualifier來篩選 bean對象
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧