getBean三種方法
如圖所示getBean有五種方式,介紹其中三種方式
我學習的資料只介紹三種使用方式在此紀錄如下
//從ClassPath找到資源文件
Resource resource = new ClassPathResource("applicationContext.xml");
//創建Spring容器(BeanFactor)
BeanFactory beanFactory = new XmlBeanFactory(resource);
//從Spring容器中獲取指定名稱對象
//HelloWorld world = (HelloWorld) beanFactory.getBean("helloWorld");
//
HelloWorld world = beanFactory.getBean("helloWorld",HelloWorld.class);
world.sayHello();HelloWorld world = beanFactory.getBean(HelloWorld.class);
什麼是BeanFactory
為Spring最基本接口,表示為一個容器負責生產調用管理bean視為Bean的工廠,下列介紹三種呼叫getBean方法
第一種方式 HelloWorld world = beanFactory.getBean(HelloWorld.class);
使用這種方式只能用一配置一種實例如果在applicationContex.xml多配置一組helloWorld2則會發生Bean類型已經被定義錯誤如下
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.springHello.HelloWorld] is defined: expected single matching bean but found 2: helloWorld2,helloWorld
根據applicationContex.xml ID名稱
HelloWorld world = (HelloWorld) beanFactory.getBean("helloWorld");
這種使用方法不安全因為可以亂定義宣告如下
int world = (Integer) beanFactory.getBean("helloWorld2");
最後第三種方式如下根據id及class方式(推薦使用)
HelloWorld world = beanFactory.getBean("helloWorld",HelloWorld.class);
HelloWorld world2 = beanFactory.getBean("helloWorld2",HelloWorld.class);
world.sayHello();
world2.sayHello();