bean用来定义Spring核心容器管理的对象
bean本质上是对象,创建bean使用构造方法完成
spring创建bean的时候调的是无参的构造方法
1.使用构造方法实例化bean
2.使用静态工厂实例化bean
3.使用实例工厂实例化bean
如何使用bean
一、创建spring上下文
1.得到spring上下文对象
(1)ApplicationContext方法
ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml")
2.根据上下文对象提供的方法获取到bean
User user =(User)context.getBean("user1")
3.使用
user.sayHi("hello")
1.得到bean工厂
(2):BeanFactory方法
BeanFactory factory =new XmlBeanFactory(new ClassPathResource(
"spring-config.xml"));
2.获取bean
User user=(User)factory.getBean("user1");//返回object所以需要强转
3.使用bean
user.sayHi()
ApplicationContext和BeanFactory区别:
相同点:都可以实现从容器中获取bean,都提供了getBean方法
不同点:
1.ApplicationContext属于BeanFactory的子类,BeanFactory只提供了基础的访问Bean的方法,而ApplicationContext除了拥有BeanFactory的所有功能之外,还提供了更多的方法实现,比如对国际化的支持、资源访问的支持、以及事件和传播等方面的支持
2.BeanFactory是按需加载Bean,ApplicationContext是饿汉方式,在创建时会将所有的Bean都加载起来,以备以后使用。
二、获取指定的Bean对象
1.Bean的id要一一对应
<bean id="user" class="..."></bean>
getBean("user")
2.getBean的方法的更多用法
(1)使用bean name获取bean
User user = (User)context.getBean("user1");
(2)根据bean type获取bean
User user =context.getBean(User.class);
写法简单但容易出问题,当同一个类型被注入到spring中多次时候,就会报错
(3)根据bean name和类型获取bean
User user =context.getBean("user",User.class);