使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题
?IOC概念和spring中的IOC
?
明確 ioc 的作用: 削減計算機程序的耦合(解除我們代碼中的依賴關系)。
使用 spring 的 IOC 解決程序耦合
獲取spring的Ioc核心容器,并根據id獲取對象
* ApplicationContext的三個常用實現類:
*????? ClassPathXmlApplicationContext:它可以加載類路徑下的配置文件,要求配置文件必須在類路徑下。不在的話,加載不了。(更常用)
*????? FileSystemXmlApplicationContext:它可以加載磁盤任意路徑下的配置文件(必須有訪問權限)
*
*????? AnnotationConfigApplicationContext:它是用于讀取注解創建容器的
* 核心容器的兩個接口引發出的問題:
*? ApplicationContext:???? 單例對象適用????????????? 采用此接口
*????? 它在構建核心容器時,創建對象采取的策略是采用立即加載的方式。也就是說,只要一讀取完配置文件馬上就創建配置文件中配置的對象。
*
*? BeanFactory:??????????? 多例對象使用
*????? 它在構建核心容器時,創建對象采取的策略是采用延遲加載的方式。也就是說,什么時候根據id獲取對象了,什么時候才真正的創建對象。
Client.java
package com.itheima.ui;import com.itheima.dao.IAccountDao; import com.itheima.service.IAccountService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 模擬一個表現層,用于調用業務層*/ public class Client {public static void main(String[] args) {//1.獲取核心容器對象ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");//ApplicationContext ac = new FileSystemXmlApplicationContext("C:\\Users\\zhy\\Desktop\\bean.xml");//2.根據id獲取Bean對象IAccountService as = (IAccountService)ac.getBean("accountService");IAccountDao adao = ac.getBean("accountDao",IAccountDao.class);System.out.println(as);System.out.println(adao); // as.saveAccount();//--------BeanFactory---------- // Resource resource = new ClassPathResource("bean.xml"); // BeanFactory factory = new XmlBeanFactory(resource); // IAccountService as = (IAccountService)factory.getBean("accountService"); // System.out.println(as);} }?
總結
以上是生活随笔為你收集整理的使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曾经案例中问题 与 工厂模式解耦
- 下一篇: 把对象的创建交给spring来管理——