Spring 是对象的容器,它会根据配置,创建对象。其实这些都需要在 bean 中配置。
创建对象有三种创建方式
空参数构造方式
静态工厂方式
实例工厂方式
其实前面我们使用的就是这种方式,要求就是创建的对象的类必须有空构造函数。
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<bean name="user1" class="com.qwm.spring1.bean.User"/>
beans>
/**
* 第一种创建方式:空参构造函数方式
*/
@Test
public void createWay1(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User user1 = (User) ac.getBean("user1");
System.out.println(user1);
}
User实例化了----com.qwm.spring1.bean.User@3f49dace
com.qwm.spring1.bean.User@3f49dace
这种方式其实就是使用一个工厂类,它会创建对象的静态方法。
package com.qwm.spring1.b_beans;
import com.qwm.spring1.bean.User;
/**
* @author: wiming
* @date: 2017-09-25 16:48:14 星期一
* @decription:
* 创建User的工厂
*/
public class UserFactory {
public static User createUser(){
System.out.println("静态工厂创建User");
return new User();
}
}
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<bean name="user2" class="com.qwm.spring1.b_beans.UserFactory" factory-method="createUser"/>
beans>
/**
* 第二种创建方式:静态工厂
*/
@Test
public void createWay2(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User user2 = (User) ac.getBean("user2");
System.out.println(user2);
}
静态工厂创建User
User实例化了----com.qwm.spring1.bean.User@67b92f0a
com.qwm.spring1.bean.User@67b92f0a
这种方式和上面方式的区别是,这种方式工厂的方法是示例的方法,不在是静态方法。配置也会不同
package com.qwm.spring1.b_beans;
import com.qwm.spring1.bean.User;
/**
* @author: wiming
* @date: 2017-09-25 16:48:14 星期一
* @decription:
* 创建User的工厂
*/
public class UserFactory {
public User createUser2(){
System.out.println("实例工厂创建User");
return new User();
}
}
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<bean name="userFactory" class="com.qwm.spring1.b_beans.UserFactory"/>
<bean name="user3" factory-bean="userFactory" factory-method="createUser2"/>
beans>
/**
* 第三种创建方式:实例工厂
*/
@Test
public void createWay3(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User user3 = (User) ac.getBean("user3");
System.out.println(user3);
}
实例工厂创建User
User实例化了----com.qwm.spring1.bean.User@61f8bee4
com.qwm.spring1.bean.User@61f8bee4
分模块配置可以我们的主配置文件中到导入模块的配置。模块的配置和主模块的配置是一样。
导入配置使用 import
<import resource="文件地址"/>
例如
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<import resource="com/qwm/spring1/bean/applicationContext.xml"/>
beans>