Spring 核心API与工厂常用方法
ApplicationContext基本说明
ApplicationContext
作用:Spring提供的ApplicationContext这个工厂,用于对象的创建
好处:解耦合
说明: 1.是一个接口,为了屏蔽实现的差异
2.非web环境:ClassPathXmlApplicationContext
3.web环境:XmlWebApplicationContext
4.ApplicationContext工厂的对象占用大量内存
5.不会频繁的创建对象:一个应用只会创建一个工厂对象
6.ApplicationContext是线程安全的。
使用:
1.创建类型
2.配置文件的配置
<bean id="persion" class="com.spring.context.basic.Persion"></bean>
3.通过工厂类,获得对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
Persion persion = (Persion) applicationContext.getBean("persion");
ApplicationContext相关方法
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
Persion persion = (Persion) applicationContext.getBean("persion");
//获得对象,不需要强转
Persion persion1 = applicationContext.getBean("persion", Persion.class);
//获取对象,只能有一个bean
/* Persion persion2 = applicationContext.getBean(Persion.class);
System.out.println(persion.toString());*/
//获取Spring工厂配置文件中所有bean标签的id值
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
System.out.println(beanDefinitionName);
}
System.out.println("@******************");
//根据类型获取Spring配置文件中对应的id值
String[] beanNamesForType = applicationContext.getBeanNamesForType(Persion.class);
for (String s : beanNamesForType) {
System.out.println(s);
}
System.out.println("@******************");
//判断是否存在指定id值的bean
System.out.println(applicationContext.containsBeanDefinition("p1"));
//判断是否存在指定id/name值的bean
System.out.println(applicationContext.containsBean("persion1"));
ApplicationContext配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="com.spring.context.basic.Persion"></bean>
<bean id="persion" class="com.spring.context.basic.Persion"></bean>
<bean id="persion1" name="p1,p2" class="com.spring.context.basic.Persion"></bean>
</beans>
(1)只配置class属性
①没有id值,但是spring会自动赋值一个id
②应用场景:如果这个bean只需要依次,那么id值可以省略。
(2)name属性
作用:用于在Spring的配置文件中,为bean对象定义别名(小名)
id和name的区别:name可以有多个,id只能有一个。
spring工厂的底层实现原理
spring工厂的代码分析
以后分析