• Spring实例化Bean的三种方式


    Spring实例化Bean的三种方式分别是

    1,xml配置使用bean的类构造器

    2,xml配置+factory类,使用静态工厂方法实例化

    3,xml配置+factory类,使用实例工厂方法实例化

    以下分别说明

    1,xml配置使用bean的类构造器

    2,xml配置+factory类,使用静态工厂方法实例化

    Spring实例化Bean 的xml文件配置

    xml文件名:beans.xml

    文件内容:

    ﹤?xml version="1.0" encoding="UTF-8"?﹥  
    
    ﹤beans xmlns="http://www.springframework.org/schema/beans" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"﹥  
    
      ﹤!-- the application context definition for the springapp DispatcherServlet --﹥  
      ﹤bean id="sayhello" class="test.service.impl.HelloBean"/﹥  
      ﹤bean id="sayhello2" class="test.service.impl.HelloBeanFactory" factory-method="createHelloBean"/﹥  
      ﹤bean id="factory" class="test.service.impl.HelloBeanInstanceFactory"/﹥   
      ﹤bean id="sayhello3" factory-bean="factory" factory-method="createHelloBean"/﹥   
    
    ﹤/beans﹥ 

     

    工厂Java文件

    文件名:HelloBeanFactory.java

    文件内容:

    package test.service.impl;
       
    import test.service.Hello;   
    
    public class HelloBeanFactory {   
        public static Hello createHelloBean() {   
            return new HelloBean();   
        }   
    } 

    Bean接口文件

    文件名:Hello.java

    文件内容:

    1. package test.service;   
    2. public interface Hello {   
    3. public void sayHello();   
    4. public void sayHello2();   
    5. public void sayHello3();   

    Bean实现文件

    文件名:HelloBean.java

    文件内容:

    1. package test.service.impl;   
    2. import test.service.Hello;   
    3. public class HelloBean implements Hello {   
    4. public void sayHello() {   
    5. System.out.println("这是一个测试程序");   
    6. }   
    7. @Override   
    8. public void sayHello2() {   
    9. System.out.println("这是一个测试程序,测试静态工厂创建bean");   
    10. }   
    11. @Override   
    12. public void sayHello3() {   
    13. System.out.println("这是一个测试程序,测试实例工厂创建bean");   
    14. }   

    3,xml配置+factory类,使用实例工厂方法实例化

    xml文件配置

    xml文件名:beans.xml

    文件内容:参照方法2中的红字部分

    工厂Java文件

    文件名:HelloBeanInstanceFactory.java

    文件内容:

    1. package test.service.impl;   
    2. import test.service.Hello;   
    3. public class HelloBeanInstanceFactory {   
    4. public Hello createHelloBean() {   
    5. return new HelloBean();   
    6. }   

    Bean接口文件

    文件名:Hello.java

    文件内容:参照方法2中的红字部分

    Bean实现文件

    文件名:HelloBean.java

    文件内容:参照方法2中的红字部分

    Spring实例化Bean完成,最后测试文件

    文件名:FirstSpring.java

    文件内容:

    1. package test.spring;   
    2. import org.springframework.context.ApplicationContext;   
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;   
    4. import test.service.Hello;   
    5. public class FirstSpring {   
    6. public static void main(String[] args) {   
    7. testHello();   
    8. testHelloForStaticFactory();   
    9. testHelloForInstanceFactory();   
    10. }   
    11. public static void testHello() {   
    12. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");   
    13. Hello hello =(Hello) applicationContext.getBean("sayhello");   
    14. hello.sayHello();   
    15. }   
    16. public static void testHelloForStaticFactory() {   
    17. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");   
    18. Hello hello =(Hello) applicationContext.getBean("sayhello2");   
    19. hello.sayHello2();   
    20. }   
    21. public static void testHelloForInstanceFactory() {   
    22. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");   
    23. Hello hello =(Hello) applicationContext.getBean("sayhello3");   
    24. hello.sayHello3();   
    25. }   

    都写完了,来执行一下,结果输出:

    这是一个测试程序

    这是一个测试程序,测试静态工厂创建bean

    这是一个测试程序,测试实例工厂创建bean

    总结

    三种Spring实例化Bean方法的用处,

    第一种方法,通过bean的缺省构造函数创建,当各个bean的业务逻辑相互比较独立的时候或者和外界关联较少的时候可以使用。

    第二种方法,利用静态factory方法创建,可以统一管理各个bean的创建,如各个bean在创建之前需要相同的初始化处理,则可用这个factory方法险进行统一的处理等等。

    第三种方法,利用实例化factory方法创建,即将factory方法也作为了业务bean来控制,觉得1可用于集成其他框架的bean创建管理方法,2能够使bean和factory的角色互换。

    原文来自:http://developer.51cto.com/art/200907/137884.htm

  • 相关阅读:
    ant design同时获取下拉框值与文本(选择框)
    nodejs express vue实现文件上传
    Vue路由传参的两种方式
    Vue项目中的接口调用
    表单上传文件 nodejs express Vue (优化)
    httprunner安装可能遇到的问题及解决办法之hrun V查询失败mac
    Eclipse调整编码方式总结
    css水平垂直居中的方法
    手机web前端调试页面的几种方式
    寻找共线特征和寻找缺失值
  • 原文地址:https://www.cnblogs.com/yokoboy/p/3036345.html
Copyright © 2020-2023  润新知