bean实例化方式
程序员文章站
2022-05-23 18:41:12
...
静态工厂
1工厂
package com.itheima.c_inject.b_static_factory;
public class MyBeanFactory {
/*
* 创建实例
* */
public static UserService createService(){
return new UserServiceImpl() ;
}
}
2spring配置
<!-- bean definitions here -->
<!--
将静态工厂创建的实例交给spring
class: 确定静态工厂全限定类名
factory-method:确定静态方法名
-->
<bean id= "userServiceId" class = "com.itheima.c_inject.b_static_factory.MyBeanFactory" factory-method="createService"></bean>
3测试
@Test
public void demo02(){
//spring 工厂
System.out.println("******");
String xmlPath = "com/itheima/c_inject/b_static_factory/beans.xml";
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserService userService = applicationContext.getBean("userServiceId" ,UserService.class);
userService.addUser();
}
实例工厂
1工厂
package com.itheima.c_inject.c_factory;
public class MyBeanFactory {
/*
* 创建实例
* */
public UserService createService(){ //非静态
return new UserServiceImpl() ;
}
}
2配置文件
<!-- bean definitions here -->
<!-- 创建工厂实例 -->
<bean id = "myBeanFactoryId" class = "com.itheima.c_inject.c_factory.MyBeanFactory"></bean>
<!-- 获得userService
factory-bean 确定工厂实例
factory-method 确定普通方法
-->
<bean id = "userServiceId" factory-bean="myBeanFactoryId" factory-method="createService"></bean>
3测试
@Test
public void demo02(){
//spring 工厂
System.out.println("******");
String xmlPath = "com/itheima/c_inject/c_factory/beans.xml";
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserService userService = applicationContext.getBean("userServiceId" ,UserService.class);
userService.addUser();
}
上一篇: 富养还是穷养,决定孩子的一生