可以实现spring的factoryBean 接口,这样可以加入spring的IOC容器

比如现在有一个类叫MyObject,我们没有这个对象的源码,无法对这个对象进行操作,那么我们如何加入spring的配置呢?

package cn.cutter.start.bean;

import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component; @Component
public class NextDayDateFactoryBean implements FactoryBean { private int count = 0; @Override
public Object getObject() throws Exception {
MyObject mo = new MyObject();
mo.setName("num:" + count++);
return mo;
} @Override
public Class getObjectType() { return MyObject.class; } @Override
public boolean isSingleton() {
return false;
}
}

我们实现了factorybean接口,实现里面三个接口,然后我们给自己写的这个factory类添加注解,交给spring托管

到现在为止,好像没什么特别的地方,但是接下来,注意了!!

写一个测试 类

@Test
public void test3() {
//测试spring的IOC容器中,默认是保持在IOC容器中只有一个实例
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:application-bean.xml");
//使用spring的factorybean
//这里注意了,我们返回的对象不是NextDayDateFactoryBean,而是MyObject,很关键 !!!!
MyObject mo1 = (MyObject) ctx.getBean("nextDayDateFactoryBean");
System.out.println("mo name is:" + mo1.getName());
MyObject mo2 = (MyObject) ctx.getBean("nextDayDateFactoryBean");
System.out.println("mo name is:" + mo2.getName());
MyObject mo3 = (MyObject) ctx.getBean("nextDayDateFactoryBean");
System.out.println("mo name is:" + mo3.getName());
MyObject mo4 = (MyObject) ctx.getBean("nextDayDateFactoryBean");
System.out.println("mo name is:" + mo4.getName()); }

你们猜这个结果会怎么样???

看到了没,我们使用factory对第三方的对象实现了控制!!!!

关键点在这里。。。。

不过说实话哈,感觉作用不是很大,我们也可以通过配置的方式直接配到spring容器中

这样不也可以加入spring配置中了吗???

当然用factorybean就不用写什么配置文件了,这个倒是实实在在的好处。。。

最新文章

  1. T-SQL 递归
  2. Servlet.init() for servlet springMvc
  3. s2 devMode cmdshell
  4. relocation 错误
  5. SPL--Serializable
  6. minicom 使用教程
  7. JavaScript编程异步助手:Promise
  8. HDOJ2009求数列的和
  9. C语言 进程控制---创建进程fork()函数
  10. php 学习笔记 一
  11. 【源码学习】redux-thunk
  12. VBA Editor Addins --> VBE插件模板开发众筹
  13. BZOJ 1912: [Apio2010]patrol 巡逻 (树的直径)(详解)
  14. Spring Boot笔记三:配置文件
  15. C# string.join
  16. springboot2、mybatis-plus3 一行配置实现打印sql最终填充的参数值
  17. No executable found matching command "dotnet-aspnet-codegenerator"
  18. Tomcat 服务器安装 SSL证书,实现 HTTP 自动跳转 HTTPS
  19. 【c++】删除string中指定的字符
  20. C#多线程的用法6-线程间的协作Mutex

热门文章

  1. 2018.12.22 bzoj3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)
  2. 2018.11.02 洛谷P2312 解方程(数论)
  3. classmethod,staticmethod
  4. Visual Studio 2017快捷键
  5. noip2017d1t1
  6. Java理论学时第五节。课后作业。
  7. 待了解概念_GraphicsView
  8. .net正则表达式实例
  9. spark图解
  10. 《mysql必知必会》学习_第13章_20180803_欢