spring factorybean和beanfactory,
目录
一、基本使用二、高级使用接口是一个接口,创建对象的过程使用了工厂模式。
一、基本使用
让弹簧容器通过接口来实现对象的创建。
创建接口案例
公共类SimpleFactoryBean实现工厂bean Cat { @ Override public Cat getObject()抛出异常{ //创建猫对象并且返回归还新猫(汤姆);} @覆盖公共类?get对象类型(){ return cat。类;}}其实这里就相当于在配置文件里创建了一个豆标签。
bean class= com。文字。登记员。simplefactorybean id= cat /bean需要加载的类
公共类别Cat { String name public Cat(String name){ this。name=名称;}} 启动类里面创建方法加载豆
@SpringBootApplicationpublic类spring boot application { public static void main(String[]args){ ConfigurableApplicationContext run=spring application。运行(spring boot应用程序。class,args);} //等价于配置文件配置@ Bean public SimpleFactoryBean catFactoryBean(){ return new SimpleFactoryBean();}}
二、高级使用
让弹簧容器通过接口创建指定接口的动态代理对象。
创建FactoryBean,可以生成任意接口的动态代理对象
创建一个接口
公共接口我的用户映射器{ void select();} 创建一个接口实现类
可以通过传入接口的全类名,创建动态代理对象。
公共类数据映射器实现工厂Bean { /** *用于保存接口的全类名*/私有字符串类名;public MapperFactoryBean(字符串类名){ this。类名=类名;} @覆盖公共对象getObject()抛出异常{类?interfaceClass=Class.forName(类名);//生成动态代理对象返回对象代理实例=代理。newproxyinstance(mapperfactorybean。班级。getclass loader()、new Class[]{interfaceClass}、new invocation handler(){ @ Override public Object invoke(Object o,Method method,Object[]objects)Throwable {//获取当前方法名系统。出去。println(方法。getname());if (select ).equals((方法。getname()))){ system。出去。println(类名动态代理对象的挑选方法被执行了!);}返回null } });返回proxyInstance} @覆盖公共类?getObjectType() { try { Class?interfaceCLass=Class.forName(类名);返回interface class } catch(ClassNotFoundException e){ e . printstacktrace();}返回null}}启动类里面创建方法加载豆
@SpringBootApplicationpublic类spring boot application { public static void main(String[]args){ ConfigurableApplicationContext run=spring application。运行(spring boot应用程序。class,args);快跑。获取bean(我的用户映射器。类);} //等价于配置文件配置@ Bean public MapperFactoryBean MapperFactoryBean(){ return new MapperFactoryBean( com。测试。登记员。我的用户映射器’);}}到此这篇关于弹簧详细讲解接口接口的使用的文章就介绍到这了,更多相关春天工厂内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。