1. 定义Fish实体类

/**
* @author 70KG
* @Title: Fish
* @Description:
* @date 2018/7/22下午5:00
* @From www.nmyswls.com
*/
@Data
public class Fish { private String name; private int age; public Fish(){} public Fish(String name, int age) {
this.name = name;
this.age = age;
} }

2. 实现FactoryBean来注入实体类

/**
* @author 70KG
* @Title: FactoryBeanRegist
* @Description:
* @date 2018/7/22下午8:06
* @From www.nmyswls.com
*/
public class FactoryBeanRegist implements FactoryBean<Fish> { @Override
public Fish getObject() throws Exception {
return new Fish();
} @Override
public Class<?> getObjectType() {
return Fish.class;
} @Override
public boolean isSingleton() {
return true;
}
}

3. 编写配置类

/**
* @author 70KG
* @Title: FactoryBeanConfig
* @Description:
* @date 2018/7/22下午8:21
* @From www.nmyswls.com
*/
@Configuration
public class FactoryBeanConfig { @Bean
public FactoryBeanRegist getBean() {
return new FactoryBeanRegist();
} }

4. 测试

/**
* @author 70KG
* @Title: FactoryBean的测试类
* @Description:
* @date 2018/7/22下午8:22
* @From www.nmyswls.com
*/
public class Test01 { @Test
public void test() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(FactoryBeanConfig.class);
// 不加"&"获取到的是FactoryBean中的实例
Object getBean1 = ac.getBean("getBean");
// 加"&"获取到的是实现了FactoryBean接口的FactoryBeanRegist本身
Object getBean2 = ac.getBean("&getBean");
System.out.println(getBean1.getClass());
System.out.println(getBean2.getClass()); } }

5. 测试结果

class com.nmys.story.springCore.springioc.importBean.Fish
class com.nmys.story.springCore.springioc.factoryBean.FactoryBeanRegist

FactoryBean是用来向容器中注入Bean的接口。而BeanFactory是从容器中取Bean的接口。

Spring源码窥探之:FactoryBean的更多相关文章

  1. Spring 源码学习(2) —— FactoryBean 的使用

    一般情况下, Spring是通过反射机制利用bean的class属性指定实现类来完成实例化bean的.在某些特定的情况下, 想做一些定制,Spring为此提供了一个org.springframewor ...

  2. Spring源码窥探之:注解方式的AOP原理

    AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容 ...

  3. Spring源码窥探之:声明式事务

    1. 导入驱动,连接池,jdbc和AOP的依赖 <!-- c3p0数据库连接池 --> <dependency> <groupId>c3p0</groupId ...

  4. Spring源码窥探之:AOP注解

    AOP也就是我们日常说的@面向切面编程,看概念比较晦涩难懂,难懂的是设计理念,以及这样设计的好处是什么.在Spring的AOP中,常用的几个注解如下:@Aspect,@Before,@After,@A ...

  5. Spring源码窥探之:@Profile

    Spring为我们提供的多环境启动 1. 配置类,注入三个不同环境的数据源,并加上注解 /** * description: 以下准备了三套不同环境的数据源 * * @author 70KG * @d ...

  6. Spring源码窥探之:Spring AOP初步使用

    AOP即面向切面编程.它的底层实际是用了spring的动态代理,具体是JDK的代理还是CGLIB的代理,就视情况而定了.本博客园仅仅作为平时记录,显得有些杂乱无章,如果想了解动态代理,设计模式,请访问 ...

  7. Spring源码窥探之:@Value

    1. 首先定义实体 /** * @author 70KG * @Title: Apple * @Description: 苹果实体 * @date 2018/10/22下午9:26 * @From w ...

  8. Spring源码窥探之:BeanPostProcessor

    Spring的Bean后置处理器 1. 实体类 /** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 ...

  9. Spring源码窥探之:Spring AOP初步

    AOP(Aspect Oriented Programming):即我们常说的面向切面编程. 什么是AOP?AOP是在我们原来写的代码的基础上,进行一定的包装,比如在方法执行前.方法返回后.方法抛出异 ...

随机推荐

  1. nodepad++格式化html代码

    如果没有安装插件

  2. 在ensp上的ARP及Proxy ARP

    啥是ARP?啥又是Proxy ARP? ARP是用来将 IP 地址解析为 MAC 地址的协议. ARP 表项可以分为动态和静态两种类型.动态 ARP ,是利用 ARP 广播报文,动态执行并自动进行 I ...

  3. GIT 基础 &本地服务器搭建

    Git是一款免费.开源的分布式版本控制系统.众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个较好的选择,本文将对此进行详 ...

  4. ansible-playbook的简单传参方式

    基本语法:     ansible-playbook -v -i myhost  test.yml -e "name=xiaoming"    // -v  是看运行细节.要更细节 ...

  5. Linux jdk8 安装

    wegt 命令安装 wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.o ...

  6. 小程序的数据监听 用法和vue中的watch一样====使用通配符监听所有自数据字段的变化

    使用通配符监听所有自数据字段的变化

  7. vmware的三种网络模式讲解

    vmware有三种网络设置模式,分别是Bridged(桥接),NAT(网络地址转换),Host-only(私有网络共享主机) 1.Bridged(桥接) 桥接模式默认使用的是:VMnet0 什么是桥接 ...

  8. WebSocket简单使用

    很简单就不写太多介绍了,仅展示服务端代码!! Configure在Startup类的方法中添加WebSockets中间件 app.UseWebSockets(); 可以配置以下设置: KeepAliv ...

  9. SpringBoot中resources配置文件application.properties

    #项目名server.servlet.context-path=/springboot-day1#端口号server.port=8989 #datasource数据库连接信息#urlspring.da ...

  10. 了解Django之前

      什么是web应用? 通俗地讲,就是通过浏览器访问一个网址,该网站从后台调取数据,然后把相应的界面展示给用户这样的一个过程. 什么是HTTP协议? 即超文本传输协议:规定了客户端与服务端消息传输的格 ...