如果监听器加载了applicationContext.xml文件,就会创建spring容器,相应的,也会根据配置的对象,创建对象,如果确定spring容器是否加载,可以通过以上两种方式解决:
1、咱们自己改错applicationContext.Xml文件,或者web.xml文件,此时不要管编译错误,直接开启服务器,如果没有报错的话,说明没有加载到,相应的配置文件,然后再进行相应的处理
2、使用spring的配置对象的方法,加假如配置文件有以下四个对象,
<!-- 简单类型注入-构造方法注入 -->
<bean name="user1" class="cn.itcast.domain.User" >
<!-- constructor-arg 属性: 代表一个构造方法参数
定位属性:
name属性:指定构造方法的参数名称
index属性:指定参数在参数列表中的索引
type属性:指定参数的类型
赋值属性:
value属性:指定参数值
ref属性: 引用容器中的其他对象
-->
<constructor-arg name="name" index="0" value="jerry" ></constructor-arg>
<constructor-arg name="age" type="java.lang.Integer" value="16" ></constructor-arg>
<!-- <constructor-arg name="car" ref="car" ></constructor-arg> -->
</bean>
<!-- get/set方法注入-property标签 -->
<!--
property元素: 代表调用一个set方法
name属性:属性名
value属性:为属性赋值(值类型)
ref属性:注入对象类型值
-->
<bean name="user2" class="cn.itcast.domain.User" >
<property name="name" value="jack"></property>
<property name="age" value="18"></property>
<property name="car" ref="car"></property>
</bean>
<!-- get/set方法注入-p名称空间
与property标签配置性质上没有什么区别.
出现时间比property标签要晚.
准备:引入p名称空间 =>xmlns:p="http://www.springframework.org/schema/p"
-->
<bean name="user3" class="cn.itcast.domain.User"
p:name="rose" p:age="20" p:car-ref="car" >
</bean>
<!-- spel表达式
使用在值类型属性赋值中
#{user3.name} : 引用user3的name属性值
-->
<bean name="user4" class="cn.itcast.domain.User" >
<property name="name" value="#{user3.name}"></property>
<property name="age" value="#{user2.age}"></property>
<property name="car" ref="car"></property>
</bean>
<bean name="car" class="cn.itcast.domain.Car" >
<property name="name" value="布加迪威航"></property>
</bean>
这个时候在有参构造还有无参构造方法里面,输出一句话
public User() {
System.out.println("user对象被创建了");
}
public User(String name, Integer age) {
super();
System.out.println("public User(String name, Integer age)");
this.name = name;
this.age = age;
}
public Car() {
super();
System.out.println("对象被创建了");
// TODO Auto-generated constructor stub
}
创建spring容器
@Test
public void fun1(){
//1 创建spring容器
ClassPathXmlApplicationContext ac =
new ClassPathXmlApplicationContext("/cn/itcast/c_injection/injection.xml");
//2 从容器中获得指定对象
//User user1 = (User) ac.getBean("user1");
//3 打印对象,看效果
//System.out.println(user1);
}
此时输出的结果:
public User(String name, Integer age)
user对象被创建了
对象被创建了
user对象被创建了
user对象被创建了
结果正好与配置的对象在applicationContext.xml中出现的顺序相关,我们也可以依次来判断spring创建容器后,某个对象是否创建!!