实例化Bean的三种方式

需要用到的几个类:

  • IUserService :

public interface IUserService {

    public void add();
}
  • UserServiceImpl:

public class UserServiceImpl implements IUserService{

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void add() {
        System.out.println("创建用户...." + name);
    }
}

1. 使用构造方法实例化

  • beans.xml: 
 <!-- 第一种方式: new 实现类-->
 <bean id="userService" class="com.lkp.service.UserServiceImpl">
        <property name="name" value="summer"></property>
    </bean>
  • test方法:
    public void test1() {
        //new 对象
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        IUserService user = (IUserService) context.getBean("userService");
        user.add();
    }

2 使用静态工厂方法实例化

 

  • UserServiceFactory1:
    public class UserServiceFactory1 {
        public static  IUserService createUserService(){
            return new UserServiceImpl() ;
        }
    }
  • beans.xml:
    <!--    第二种: 通过静态工厂方法-->
        <bean id="userService2" class="com.lkp.service.UserServiceFactory1" factory-method="createUserService">
            <property name="name" value="summer"></property>
        </bean>

     

  • test方法:
        public void test1() {
            //静态工厂
            ApplicationContext context = new ClassPathXmlApplicationContext("beans3.xml");
            IUserService userService = (IUserService) context.getBean("userService2");
            userService.add();
        }

3 使用实例工厂方法实例化

  • UserServiceFactory1:
public class UserServiceFactory2 {
    public  IUserService createUserService() {
        return new UserServiceImpl();
    }
}
  • beans.xml:
    <!--第三种 实例工厂方法-->
        <!--    创建实例factory2 bean-->
        <bean id="factory2" class="com.lkp.service.UserServiceFactory2" />
        <bean id="userService3" factory-bean="factory2" factory-method="createUserService"></bean>

     

  • test方法:
        public void test1() {
            //实例工厂 创建工厂
            UserServiceFactory2 factory2 = new UserServiceFactory2();
            IUserService userService3 = factory2.createUserService();
            userService3.add();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值