• Spring随笔(05)


    1、Bean的4种实例化方式

      1)构造器实例化:要有无参数构造器,最标准,使用最多

      2)静态工厂方法实例化:解决系统遗留问题

      3)实例工厂方法实例化:解决系统遗留问题

      4)实现FactoryBean接口实例化:实例工厂的变种(简化配置),集成其他框架使用:LocalSessionFactoryBean

    public class someBeanX{
    }
    <!-- 构造器实例化(无参构造器),最标准,使用最多 -->
    <
    bean id="someBean1" class="SomeBean1全限定名"/>

    <!-- ②静态工厂方法实例化:解决系统遗留问题 -->
    <!--
      Class clz = Class.forName("xxx.xxx.SomeBean2Factory");
      Method m = clz.getMethod("getSomeBean2");
      SomeBean2 someBean2 = m.invoke(null,null);
    -->
    <bean id="someBean2" class="SomeBean2Factory全限定名" factory-method="getSomeBean2"/>

    <!-- ③实例工厂方法实例化:解决系统遗留问题 -->
    <bean id="someBean3Factory" class="SomeBean3Factory全限定名"/>
    <bean id="someBean3" factory-bean="someBean3Factory" factory-method="getSomeBean3"/>

    <!-- ④实现FactoryBean接口实例化:实例工厂的变种,集成其他框架使用:LocalSessionFactoryBean -->
    <bean id="someBean4" class="SomeBean4FactoryBean全限定名"/>

    @RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration
    public class CreateBeanTest{
    @Autowired
    private ApplicationContext ctx; // ①构造器实例化(无参构造器),最标准,使用最多 @Test public void testConstructor(){ // new SomeBean1(); SomeBean1 someBean1 = ctx.getBean("someBean1",SomeBean1.class); System.out.println(someBean1); } // ②静态工厂方法实例化:解决系统遗留问题 @Test public void testStaticFactory(){ // 工厂类.静态工厂方法---->创建对象 // SomeBean2 someBean2 = SomeBean2Factory.getSomeBean2();// System.out.println(someBean2); SomeBean2 someBean2 = ctx.getBean("someBean2",SomeBean2.class); System.out.println(someBean2); }

      // ③实例工厂方法实例化:解决系统遗留问题
      @Test
      public void testInstanceFactory(){
        // 工厂类对象.实例工厂方法---->创建对象
        // SomeBean3Factory someBean3Factory = new SomeBean3Factory();
        // SomeBean3 someBean3 = someBean3Factory.getSomeBean3();
        // System.out.println(someBean3);


        SomeBean3 someBean3 = ctx.getBean("someBean3",SomeBean3.class);
        System.out.println(someBean3);
      }
      // ④实现FactoryBean接口实例化:实例工厂变种,集成其他框架使用:LocalSessionFactoryBean  
      @Test
      public void testFactoryBean(){
        SomeBean4 someBean4 = ctx.getBean("someBean4",SomeBean4.class);
        System.out.println(someBean3);
      }
     } 
    public class SomeBean2Factory{
        public static SomeBean2 getSomeBean2(){
            return new SomeBean2();
        }   
    }
    public class SomeBean3Factory{
        public SomeBean3 getSomeBean3(){
            return new SomeBean3();
        }   
    }
    public class SomeBean4FactoryBean implements FactoryBean<SomeBean4>{
      
      // 返回SomeBean4对象
      @Override
    public SomeBean4 getObject() thows Exception{ return new SomeBean4(); }

      // 返回创建对象的类
      @Override
      public Class<?> getObjectType(){
        return SomeBean4.class;
      }

      
      // 是否是单例的
      @Override public boolean isSingleton(){ return true; } }

      

      

      

  • 相关阅读:
    使用C#调用系统API实现锁定计算机
    阶段性总结
    心情状态所困
    VMware虚拟机网络配置相关备忘
    数据库学习第一篇
    给window xp sp2设置共享文件夹
    转报竞赛实操试题
    数据库视频笔记
    Android开发从零开始,搭建交叉编译环境
    排故总结
  • 原文地址:https://www.cnblogs.com/luomsg/p/6420166.html
Copyright © 2020-2023  润新知