1、使用构造方法实例化
2、使用静态工厂方法实例化
3、使用实例工厂方法实例化
Bean.xml文件
<!--装配bean的三种方式,所谓的装配bean就是在xml写一个bean标签-->
<!-- 第一种方式: new 实现类-->
<bean id="userService1" class="com.gyf.service.UserServiceImpl"></bean>
<!-- 第二种方式:通过静态工厂方法
spring的版本过低,3.0版本,把jdk改成1.7-->
<bean id="userService2" class="com.gyf.service.UserSereviceFactory1" factory-method="createUserService"></bean>
<!--第三种方式:通过实例工厂方法 -->
<!-- 创建实例factory2 bean-->
<bean id="factory2" class="com.gyf.service.UserSereviceFactory2"></bean>
<bean id="userService3" factory-bean="factory2" factory-method="createUserService"></bean>
java文件
@Test
public void test1(){
ApplicationContext context = new ClassPathXmlApplicationContext("beans3.xml");
//new 对象
//IUserService userService1 = (IUserService) context.getBean("userService1");
//userService1.add();
//静态工厂
//IUserService userService2 = UserSereviceFactory1.createUserService();
//IUserService userService2 = (IUserService) context.getBean("userService2");
//userService2.add();
//实例工厂
//1.创建工厂
// UserSereviceFactory2 factory2 = new UserSereviceFactory2();
//IUserService userService3 = factory2.createUserService();
IUserService userService3 = (IUserService) context.getBean("userService3");
userService3.add();
}
注:bean的作用域
1、singleton:在Spring IoC容器中仅存在一个Bean实例,Bean以单例方式存在,默认值(重要)
2、prototype:每次从容器中调用Bean时,都返回一个新的实例,即每3次调用getBean()时 ,相当于执行new XxxBean()(重要)
3、request 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
4、session 同一个HTTP Session 共享一个Bean,不同Session使用不同Bean,仅适用于WebApplicationContext 环境
5、globalSession 一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext 环境
案例: