spring学习记录-IOC
ApplicationContext(工厂–加工xml或类配置文件)
要努力学习啊!!!
作为萌新的我的个人理解:ApplicationContext是一个通过加载配置文件生成的IOC容器,管理其中各种bean。
ApplicationContext三个常用实现类(三种创建ApplicationContext的方式):
- AnnotationConfigApplicationContext --通过注解类加载配置
- FileSystemXmlApplicationContext --通过文件加载
- ClassPathXmlApplicationContext --通过类路径下xml文件加载
// new AnnotationConfigApplicationContext(MySimpleFactory.class);
// new FileSystemXmlApplicationContext("文件路径");
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");//默认Bean为单例模式,初始化时生产bean
配置文件
XML格式spring的配置文件基本格式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<bean name="dateFactory" class="Factory.MySimpleFactory" scope="prototype"></bean>
<bean name="staticDate" class="Factory.MySimpleFactory" factory-method="staticCreateDate" scope="prototype" init-method="init" destroy-method="PreDestory">
<property name="name" value="多例对象"></property>
</bean>
<bean name="simpleDate" factory-bean="dateFactory" factory-method="createDate" scope="singleton" init-method="init" destroy-method="PreDestory" >
<property name="name" value="单例对象"></property>
</bean>
</beans>
XML中申明一个Bean的基本方式
<bean name="iocBean1" class="Entity.Person"> </bean>
配置bean的name或者id,以及需要创建类的全类名
除此外,还可以通过其他工厂Bean的方法申明Bean
例:
<bean name="dateFactory" class="Factory.MySimpleFactory"></bean> <bean name="simpleDate" factory-bean="dateFactory" factory-method="createDate" scope="singleton" init-method="init" destroy-method="PreDestory" ></bean>
需要注意工厂Bean也需要现在XML中申明才可使用
Bean的使用
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");//默认Bean为单例模式,初始化时生产bean
Person p1 = ac.getBean("iocBean1", Person.class);//通过xml中配置的Bean对的name获取对于bean
p1.say();
控制台打印
hello
取出的Bean可以正常使用