Spring中bean的管理
控制反转和依赖注入是Spring的核心机制。
控制反转和依赖注入都是通过 Bean 实现的,Bean是注册到Spring容器中的Java类。Bean由Spring进行管理。
最常用的: BeanFactory ApplicationContext 两个接口
getBean(String name) 根据参数名称获取Bean
XmlBeanFactory类读取XML文件生成BeanFactory接口实例的具体语法格式:
BeanFactory beanFactory=new XmlBeanFactory(new FileSystemResoure("D:/bean.xml"));
ApplicationContext接口建立在BeanFactory接口的基础之上。
常用的ApplicationContext接口实现类
| 类名称 | 描述 |
|---|---|
| ClassPathXmlApplicationContext | 从类路径加载配置文件,实例化ApplicationContext |
| FileSystemXmlApplicationContext | 从文件系统加载配置文件,实例化ApplicationContext接口 |
| AnnotationConfigApplicationContext | 从注解中加载配置文件,实例化ApplicationContext接口 |
| WebApplicationContext | 在Web应用中使用,从相当于Web根目录的路径中加载配置文件,实例化ApplicationContext接口 |
| ConfigurableWebApplicationContext | 扩展了WebApplicationContext类,可以通过获取XML配置文件的方式实例化WebApplicationContext类 |
实例化Bean的3种方式:
-
构造方法实例化
是指Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean。
public class Bean1 { public Bean1(){ System.out.println("这是Bean1"); } }@Test public void Bean1(){ ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml"); System.out.println(ac.getBean("bean1", Bean1.class)); }<bean id="bean1" class="com.hua.dao.Bean1"/> -
静态方法实例化
需要开发者定义一个 静态工厂类 ,Bean配置文件中的class属性指定的不再是Bean实例的实现类,而是 静态工厂类 ,还需要使用元素的factory-method属性指定所定义的静态工厂方法。
public class Bean2 { public Bean2(){ System.out.println("这是Bean2"); } }public class MyBeanFactory { //使用MyBeanFactory类的工厂创建Bean2实例 public static Bean2 createBean(){ return new Bean2(); } }<bean id="bean2" class="com.hua.dao.MyBeanFactory" factory-method="createBean"/> -
实例工厂实例化
直接创建Bean实例。在XML配置文件中,不使用class属性直接指向Bean实例所属的类,而是 通过factory-bean属性指向为Bean配置的实例工厂 ,并且使用factory-method属性指定要调用的实例工厂中的方法。
public class Bean3 { public Bean3(){ System.out.println("这是Bean3"); } }public class MyBean3Factory { public MyBean3Factory(){ System.out.println("bean3工厂实例化中"); } //创建Bean3实例的方法 public Bean3 createBean(){ return new Bean3(); } }<bean id="myBean3Factory" class="com.hua.dao.MyBean3Factory"/> <bean id="bean3" factory-bean="myBean3Factory" factory-method="createBean"/>
本文深入讲解Spring框架中Bean的管理机制,包括控制反转与依赖注入的基本概念,BeanFactory与ApplicationContext接口的应用,以及Bean实例化的三种方式:构造方法实例化、静态方法实例化和实例工厂实例化。
1402

被折叠的 条评论
为什么被折叠?



