Spring IOC
1.Spring提供的IOC容器的使用?
2.关于Spring 配置文件的头信息?
<beans
xmlns:xmlnamespace:xml的命名空间
命名空间:相当于JAVA中的package,避免命名的冲突
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
//schemaLocation:schema:XML的约束文件的位置
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> schame文件后缀名 xsd
XML文档的约束文件有两种:
DTD文档: 语法简单 老 后缀:xx.dtd
schema文档: 功能强大 新 后缀:xx.xsd
<bean id="stu" class="com.etoak.student.entity.Student"></bean>
<bean id="sch" class="com.etoak.student.entity.School"></bean>
</beans>
3.SpringIOC容器构造对象的方式?
-
无参构造方法 <bean id="stu" scope="prototype"
class="com.etoak.student.entity.Student"></bean>
<bean id="sch" class="com.etoak.student.entity.School"></bean>
-
带参数构造方法
<bean id="stu1" class="com.etoak.student.entity.Student">
<constructor-arg name="username" value="etoak" />
<constructor-arg name="pwd" value="abc" />
</bean>
<bean id="stu2" class="com.etoak.student.entity.Student">
<constructor-arg type="java.lang.String" value="etoak" />
<constructor-arg type="java.lang.String" value="abc" />
</bean>
<bean id="stu3" class="com.etoak.student.entity.Student">
<constructor-arg index="0" value="etoak" />
<constructor-arg index="1" value="abc" />
</bean>
-
静态工厂
<bean id="stu4"
class="com.etoak.student.entity.StudentFactory"
factory-method="getStu"></bean>
-
实例工厂
<bean id="f" class="com.etoak.student.entity.StudentFactory"></bean>
<bean id="stu5" factory-method="getStu1" factory-bean="f"></bean>
-
实现FactoryBean接口的方式 java public class StudentFactoryBean implements FactoryBean<Student> {
public StudentFactoryBean(){
System.out.println("1111111111");
}
public Student getObject() throws Exception {
System.out.println("非常复杂的构造对象的过程");
return new Student();
}
public Class<?> getObjectType() {
return Student.class;
}
}
<!--向IOC容器中注册一个bean对象,标示、名字叫stu6
对象是:(因为实现FactoryBean接口)StudentFactoryBean类中的getObject方法返回值-->
<bean id="stu6" class="com.etoak.student.entity.StudentFactoryBean"></bean>
-
注解
4.Spring IOC容器属性赋值的方式?
-
setter (前提! 属性有setter方法) <bean id="stu" scope="prototype"
class="com.etoak.student.entity.Student">
<property name="username" value="etoak"></property>
<property name="pwd" value="aaaa"></property>
<property name="emails">
<list>
<value>etoak@qq.com</value>
<value>et@qq.com</value>
</list>
</property>
<property name="score">
<map>
<entry key="corejava" value="100"></entry>
<entry key="db" value="120"></entry>
<entry key="spring" value="150"></entry>
</map>
</property>
<property name="strs">
<array>
<value>abc</value>
<value>dfa</value>
</array>
</property>
<property name="sch" ref="sch"></property>
<property name="properties">
<props>
<prop key="key">value</prop>
<prop key="key1">value1</prop>
</props>
</property>
</bean>
-
构造方法 <bean id="stu1" class="com.etoak.student.entity.Student">
<constructor-arg name="a" value="etoak"></constructor-arg>
<constructor-arg name="pwd" value="abc"></constructor-arg>
</bean>
<bean id="stu2" class="com.etoak.student.entity.Student">
<constructor-arg type="java.lang.String" value="etoak"></constructor-arg>
<constructor-arg type="java.lang.String" value="abc"></constructor-arg>
</bean>
<bean id="stu3" class="com.etoak.student.entity.Student">
<constructor-arg index="0" value="etoak"></constructor-arg>
<constructor-arg index="1" value="abc"></constructor-arg>
</bean>
-
注解
5. BeanFactory和FactoryBean的区别?
-
BeanFactory是Spring提供的IOC容器的核心接口 。 getBean是其核心方法,用来创建、管理、获得bean对象。 -
FactoryBean是IOC容器的构造对象的方式之一。 当使用该接口时,我们写一个类实现该接口并且提供getObject 方法,就可以像IOC容器中注册bean对象。一般XXFactoryBean就是用来提供 XX对象的,如:StudentFactoryBean就是用来提供Student对象的。
|