三种bean实例化方式: 默认构造,静态工厂,实例工厂。

默认构造:

<bean id="" class=""></bean> 这种方式就是使用类的默认构造创建实例对象

静态工厂:

常用与spring整合其他框架(工具);静态工厂,用于生成实例对象,所有的方法必须是static.

<bean id="" class="工厂全限定类名" factory-method="静态方法"></bean>

package com.atChina.staticFactory;public interface SomeService {void doSome();
}package com.atChina.staticFactory;public class SomeServiceImpl implements SomeService {public SomeServiceImpl(){System.out.println("SomeServiceImpl...无参构造函数..");}@Overridepublic void doSome() {System.out.println("doSome业务方法...");}// 定义bean的生命始末方法,自定义方法参与到spring创建和销毁对象的过程中。// 初始化方法public void startUp(){System.out.println("bean的初始化方法,可以完成构造方法的功能,给属性赋值,初始化其他对象");}// bean销毁之前执行的方法public void endDown(){System.out.println("bean对象销毁之前执行的方法,清楚对象,释放内存");}
}package com.atChina.staticFactory;public class MyBeanFactory {public static SomeService createService(){return new SomeServiceImpl();}
}
<bean id="someService2" class="com.atChina.staticFactory.MyBeanFactory" factory-method="createService" />
@Testpublic void testStaticFactory(){String configLocation = "applicationContext.xml"; // 类路径的根目录ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocation);com.atChina.staticFactory.SomeService ss = (com.atChina.staticFactory.SomeService)ctx.getBean("someService2");ss.doSome();  }

实例工厂

必须先有工厂实例对象,通过实例对象创建对象。提供所有的方法都是非静态的。

package com.atChina.Factory;public interface SomeService {void doSome();
}package com.atChina.Factory;public class SomeServiceImpl implements SomeService {public SomeServiceImpl(){System.out.println("SomeServiceImpl...无参构造函数..");}@Overridepublic void doSome() {System.out.println("doSome业务方法...");}// 定义bean的生命始末方法,自定义方法参与到spring创建和销毁对象的过程中。// 初始化方法public void startUp(){System.out.println("bean的初始化方法,可以完成构造方法的功能,给属性赋值,初始化其他对象");}// bean销毁之前执行的方法public void endDown(){System.out.println("bean对象销毁之前执行的方法,清楚对象,释放内存");}
}package com.atChina.Factory;public class MyBeanFactory {public  SomeService createService(){return new SomeServiceImpl();}
}
<!-- 创建实例工厂 --><bean id="myBeanFactory" class="com.atChina.Factory.MyBeanFactory" /><!-- 从实例工厂获得someService --><bean id="someService3" factory-bean="myBeanFactory" factory-method="createService" />
@Testpublic void testFactory(){String configLocation = "applicationContext.xml"; // 类路径的根目录ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocation);com.atChina.Factory.SomeService ss = (com.atChina.Factory.SomeService)ctx.getBean("someService3");ss.doSome();    }

spring26-1: bean的实例方式相关推荐

  1. Spring学习笔记:2(IOC装配Bean之xml方式)

    xml配置方式装配Bean 本文借鉴于:https://www.cnblogs.com/qdhxhz/p/6511887.html Spring框架Bean实例化的方式提供了三种方式实例化Bean 构 ...

  2. IOC操作Bean管理注解方式(创建对象)

    目录 IOC操作Bean管理注解方式(创建对象) 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供注解主要有以下四种 (1)@Component (2)@Service (3)@C ...

  3. IOC操作Bean管理XML方式(bean 的生命周期)

    目录 IOC操作Bean管理XML方式(bean 的生命周期) 1.bean 的生命周期(在单例模式下的生命周期) (1)通过构造器创建 bean 的实例(执行类中无参构造方法去创建对象) (2)为 ...

  4. IOC操作Bean管理XML方式(bean的作用域)

    目录 IOC操作Bean管理XML方式(bean的作用域) 1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式 (1)在Spring 配置文件bean 标签里面有属性(scop ...

  5. IOC操作Bean管理XML方式(FactoryBean)

    目录 IOC操作Bean管理XML方式(FactoryBean) Spring 有两种类型的bean 第一种:是普通的 bean 第二种:工厂bean FactoryBean 第一步:创建类,让这个类 ...

  6. spring框架学习(一):Bean的装配方式 ——基于注解的装配、自动装配

    Bean的装配方式 基于注解装配 常用注解: 总结 自动装配 [序言] 在前面的例子中我们就可以看到了使用基于XML方式的缺点了:如果应用中有较多的Bean对象,则会导致xml文件过于臃肿,给后续的维 ...

  7. Spring Bean、XML方式Bean配置、Bean实例化配置、Bean注入

    文章目录 Bean管理 一.SpringBoot Bean 初了解 1.1 了解 1.2 Bean的作用域 1.2.1 注意事项 1.3 第三方Bean 二. 基于XML方式Bean的配置 2.1 S ...

  8. 实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、(FactoryBean测试)★

    实验5:配置通过静态工厂方法创建的bean.实例工厂方法创建的bean.(FactoryBean测试)★ bean的创建默认就是框架利用反射new出来的bean实例 工厂模式:工厂帮我们创建对象:有一 ...

  9. spring中bean的细节之三种创建Bean对象的方式

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

最新文章

  1. PHP中Header函数和PHP_AUTH_USER做用户验证
  2. Linux popen和pclose启动shell命令的问题思考
  3. Redis工作笔记-Set类型
  4. Tensorflow中卷积的padding操作
  5. DeepMind科学家:强化学习足以满足通用AI需求
  6. 实际生产中,微服务用 Spring Cloud 多还是 Dubbo 多?
  7. linux 添加软连接、查看软连接、增加文件的执行权限
  8. sublime下编辑LaTeX
  9. 深度Linux操作系统使用体验
  10. Chrome应用商店打不开问题
  11. 下载Chrome浏览器crx文件插件最简单方法
  12. 导函数连续、可导、可微、连续、有界、可积的关系,史上最全!一张图搞定!
  13. 摘抄整理:基于数据驱动的故障诊断方法综述
  14. Airbnb新用户民宿预定情况预测
  15. 2023 抖音表情包小程序变现项目 详细玩法视频课程
  16. 如何做到精准引流获客?
  17. gif制作方法教学,教你快速上手制作gif动图
  18. 美女画廊(点击上面的图片下面进行显示)
  19. Hash算法总结(转载)
  20. 八、【中级篇】数码管驱动(74HC138,74HC595)

热门文章

  1. 数据结构第二版之(课后题)BF算法病毒感染检测
  2. UEditor 使用setContent()遇到的奇葩问题
  3. 简易的阻尼滚动条的插件
  4. Centos:mysql的安装和使用:yum方式
  5. 如何用vue-router为每个路由配置各自的title
  6. Confluence 6 选项 2 – 转移 Crowd/Jira 应用程序中的用户和用户组到 Co
  7. 网络安全法今日实施 互联网企业对隐私政策重视不足
  8. 还有 13 天,苹果就要关上 HTTP 大门了
  9. 5.4 异步TCP编程(一)
  10. 组建Livebos超级快速开发平台学习研讨QQ群 !