• 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

  • 相关阅读:
    周杰伦理片,吴奇隆胸店,邓紫棋牌室,黄家驹留所,金秀贤鸭蛋,郭富城管员,苍井空调店,齐达内衣店,乔布斯袜店……能接下去么?
    华彬庄园_百度百科
    9月19号-9月21号丰宁坝上草原行
    寻找INTERIGHT衬衫男神! [复制链接]
    新公司,新挑战
    docker~通过vs2017的Dockerfile来生成镜像
    EF架构~codeFirst从初始化到数据库迁移
    干货~powershell与bash和docker在项目中怎么用
    docker~Dockerfile优化程序的部署
    代码混淆 GSON完满解决
  • 原文地址:https://www.cnblogs.com/yokoboy/p/3036345.html
Copyright © 2020-2023  润新知