Spring源码窥探之:FactoryBean
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的更多相关文章
- Spring 源码学习(2) —— FactoryBean 的使用
一般情况下, Spring是通过反射机制利用bean的class属性指定实现类来完成实例化bean的.在某些特定的情况下, 想做一些定制,Spring为此提供了一个org.springframewor ...
- Spring源码窥探之:注解方式的AOP原理
AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容 ...
- Spring源码窥探之:声明式事务
1. 导入驱动,连接池,jdbc和AOP的依赖 <!-- c3p0数据库连接池 --> <dependency> <groupId>c3p0</groupId ...
- Spring源码窥探之:AOP注解
AOP也就是我们日常说的@面向切面编程,看概念比较晦涩难懂,难懂的是设计理念,以及这样设计的好处是什么.在Spring的AOP中,常用的几个注解如下:@Aspect,@Before,@After,@A ...
- Spring源码窥探之:@Profile
Spring为我们提供的多环境启动 1. 配置类,注入三个不同环境的数据源,并加上注解 /** * description: 以下准备了三套不同环境的数据源 * * @author 70KG * @d ...
- Spring源码窥探之:Spring AOP初步使用
AOP即面向切面编程.它的底层实际是用了spring的动态代理,具体是JDK的代理还是CGLIB的代理,就视情况而定了.本博客园仅仅作为平时记录,显得有些杂乱无章,如果想了解动态代理,设计模式,请访问 ...
- Spring源码窥探之:@Value
1. 首先定义实体 /** * @author 70KG * @Title: Apple * @Description: 苹果实体 * @date 2018/10/22下午9:26 * @From w ...
- Spring源码窥探之:BeanPostProcessor
Spring的Bean后置处理器 1. 实体类 /** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 ...
- Spring源码窥探之:Spring AOP初步
AOP(Aspect Oriented Programming):即我们常说的面向切面编程. 什么是AOP?AOP是在我们原来写的代码的基础上,进行一定的包装,比如在方法执行前.方法返回后.方法抛出异 ...
随机推荐
- nodepad++格式化html代码
如果没有安装插件
- 在ensp上的ARP及Proxy ARP
啥是ARP?啥又是Proxy ARP? ARP是用来将 IP 地址解析为 MAC 地址的协议. ARP 表项可以分为动态和静态两种类型.动态 ARP ,是利用 ARP 广播报文,动态执行并自动进行 I ...
- GIT 基础 &本地服务器搭建
Git是一款免费.开源的分布式版本控制系统.众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个较好的选择,本文将对此进行详 ...
- ansible-playbook的简单传参方式
基本语法: ansible-playbook -v -i myhost test.yml -e "name=xiaoming" // -v 是看运行细节.要更细节 ...
- Linux jdk8 安装
wegt 命令安装 wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.o ...
- 小程序的数据监听 用法和vue中的watch一样====使用通配符监听所有自数据字段的变化
使用通配符监听所有自数据字段的变化
- vmware的三种网络模式讲解
vmware有三种网络设置模式,分别是Bridged(桥接),NAT(网络地址转换),Host-only(私有网络共享主机) 1.Bridged(桥接) 桥接模式默认使用的是:VMnet0 什么是桥接 ...
- WebSocket简单使用
很简单就不写太多介绍了,仅展示服务端代码!! Configure在Startup类的方法中添加WebSockets中间件 app.UseWebSockets(); 可以配置以下设置: KeepAliv ...
- SpringBoot中resources配置文件application.properties
#项目名server.servlet.context-path=/springboot-day1#端口号server.port=8989 #datasource数据库连接信息#urlspring.da ...
- 了解Django之前
什么是web应用? 通俗地讲,就是通过浏览器访问一个网址,该网站从后台调取数据,然后把相应的界面展示给用户这样的一个过程. 什么是HTTP协议? 即超文本传输协议:规定了客户端与服务端消息传输的格 ...