zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    postgresql 53300错误
    linux su失败:无法设置用户ID:资源暂时不可用
    shell中使用带密码的方式直接pg_dump和psql
    pg数据库查询表大小
    linux安装postgresql简洁版
    检查linux版本命令
    博客园后台搜索自己的博客
    欧式洗车
    做生意
    无线AP隔离
  • 原文地址:https://www.cnblogs.com/yokoboy/p/3036345.html
Copyright © 2011-2022 走看看