Spring-7.Bean继承与FactoryBean

Spring : Spring自定义FactoryBean 1.美图 2.概述 一般情况下,Spring通过反射机制利用<bean>的class属性指定实现类实例化Bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在<bean>中提供大量的配置信息。 配置方式的灵活性是受限的,这时采用编码的方式可能会得到一个简单的方案。Spring为此提供了一个org.springframework.bean.fact... 阅读详情

一、抽象bean与子bean

抽象bean解决了重复配置臃肿问题。

Spring中的bean继承:实例参数之间的延续;

                                    子父bean之间可以是不同的类型,不具有多态性,子bean不能被父bean使用;

java继承:一般到特殊的细化,方法、属性的延续;

 子类是特殊的父类。

抽象bean----为<bean.../>增加abstract="true",

                    Spring不会为抽象bean实例化,不用指定class

<!-- 指定abstract="true"定义抽象Bean -->
	<bean id="personTemplate" abstract="true">
		<property name="name" value="crazyit"/>
		<property name="axe" ref="steelAxe"/>
	</bean>
	
	<!-- 通过指定parent属性指定下面Bean配置可从父Bean继承得到配置信息 -->
	<bean id="chinese" class="org.crazyit.app.service.impl.Chinese"	parent="personTemplate"/>		
	<bean id="american" class="org.crazyit.app.service.impl.American" parent="personTemplate"/>

后两个bean中没有配置property,但是继承了模板中的属性。

二、容器中的工厂bean(FactoryBean)

工厂bean必须实现FactoryBean接口。FactoryBean提供了3个方法:

  • T getObject(): 返回工厂返回的实例
  • Class<> getObjectType( ): 生成的实例的实现类
  • boolean isSingleton( )
①实现了FactoryBean的工厂
package codeEETest;

import java.lang.reflect.*;
import org.springframework.beans.factory.FactoryBean;

public class GetFieldFactoryBean implements FactoryBean<Object>
{
	private String targetClass;
	private String targetField;
	// targetClass的setter方法
	public void setTargetClass(String targetClass)
	{
		this.targetClass = targetClass;
	}

	// targetField的setter方法
	public void setTargetField(String targetField)
	{
		this.targetField = targetField;
	}
	// 返回工厂Bean所生产的产品
	@Override
	public Object getObject() throws Exception
	{
		Class<?> clazz = Class.forName(targetClass);
		Field field = clazz.getField(targetField);
		return field.get(null);
	}
	// 获取工厂Bean所生产的产品的类型
	@Override
	public Class<? extends Object> getObjectType()
	{
		return Object.class;
	}
	// 返回该工厂Bean所生成的产品是否为单例
	@Override
	public boolean isSingleton()
	{
		return false;
	}
}
②xml
<!-- 下面配置相当于如下代码:
	FactoryBean factory = new org.crazyit.app.factory.GetFieldFactoryBean();
	factory.setTargetClass("java.sql.ResultSet");
	factory.setTargetField("TYPE_SCROLL_SENSITIVE");
	north = factory.getObject(); -->
	
	<bean id="theValue" class="codeEETest.GetFieldFactoryBean">
		<property name="targetClass" value="java.sql.ResultSet"/>
		<property name="targetField" value="TYPE_SCROLL_SENSITIVE"/>
	</bean>
③测试
public class SpringTest
{
	public static void main(String[] args)throws Exception
	{
		ApplicationContext ctx = new
			ClassPathXmlApplicationContext("codeEETest/beans.xml");
		// 下面2行代码获取的FactoryBean的产品
		System.out.println(ctx.getBean("theValue"));
		// 下面代码可获取的FactoryBean本身
		System.out.println(ctx.getBean("&theValue"));
	}
}
1005
codeEETest.GetFieldFactoryBean@599aa2db




实测对比:DECIMER、Img2Mol、MolScribe,哪个化学结构识别工具更靠谱? 化学结构识别(CSR)工具的核心任务是将分子结构图像转换为SMILES(Simplified Molecular Input Line Entry System)表示。这一过程需要克服图像质量差异、绘制风格变化以及特殊基团识别等挑战。三款工具采用不同的技术路线:DECIMER:基于EfficientNetV2+Transformer架构,优势在于处理标准期刊文献中的分子图示Img2Mol。 阅读详情

相关推荐

【侯俊霞全网最全收集--PLC1200/200SMART(88+93课时) 第1章】

第1章:零基础快速入门西门子S7-1200

问就ycy的博客 2033

spring的factoryBean:继承FactoryBean初始化类

public class SimpleA implements FactoryBean<Person>{ private Person person; @Override public Person getObject() throws Exception { return person; } @Override public Class<?>

qq_31349333的博客 715

上下文理解的AI增强方案:AI应用架构师的架构洞察

本文将从AI应用架构师的视角,深入探讨“上下文理解”的技术本质、核心挑战,以及一套可落地的上下文增强架构方案。我们会拆解上下文理解的底层需求,分析架构设计中的关键决策,并通过具体案例展示如何构建一个能“记住过去、理解现在、预测未来”的AI系统。三个维度:上下文的内容范围(短期/中期/长期)、数据类型(文本/结构化/多模态)、技术挑战(窗口限制/信息过载/跨会话一致性);三种架构模式:分层上下文存储(热/冷数据分离)、上下文路由(按需筛选)、动态压缩(适配模型窗口);四个关键组件。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 219

Spring中的Bean继承关系

写在之前最近没事在浏览Spring官网,简单写一些相关的笔记,并不包所有技术点,信息来自Spring5.2.3。

Keep learing, and stay fast 1999

xhs私信协议分析

之前分析过xhs的shield算法,今天再聊聊xhs的私信,文章仅供学习参考研究交流,如有侵权请联系删帖。经过抓包分析发现私信接口并不是走的http协议,而是socket协议。而要获取socket包则需要使用wireshark软件1、protobuf的包体中的序号7,多次验证后发现文字信息的需要需要固定成12、protobuf的包体中的序号12,多次验证后发现文字信息的需要需要固定成1后续有时间的话,再研究一下视频和图片格式的私信协议,这次就分析到这里吧。

佛系更新... 3482

R语言绘制森林图

运行上述代码后,将会生成一个标题为"森林图示例"的森林图。通过以上代码示例,你可以根据自己的数据集和需求创建定制的森林图。在实际应用中,你还可以进一步调整图形的样式,添加图例、坐标轴标签等,以使森林图更加美观和易于理解。在数据可视化领域,森林图是一种常用的图形类型,用于展示多个分类变量之间的关系。本文将介绍如何使用R语言创建森林图,并提供相应的源代码示例。森林图通常由垂直的线段表示不同类别的观测值,并且线段的长度表示数值变量的大小。上述代码中,我们为不同的类别分别指定了蓝色和红色作为颜色映射关系。

TechNovaX的博客 1044

Spring 基础教程 (第 11 章) - Spring Bean 继承

在 Spring 中,Bean 和 Bean 之间也存在继承关系。我们将被继承的 Bean 称为父 Bean,将继承父 Bean 配置信息的 Bean 称为子 Bean。

分享编程干货 304

小秋SLAM入门实战ubuntu所有文章汇总

ubuntu 终端如何停止快速打印的输出以及恢复命令 ubuntu 终端如何快速打开当前路径下的图形化窗口界面? killall -9用途用法 ps -xu | grep这个命令的用途 linux 下 top命令显示的是内存是堆内存吗? zip分割和合并 关闭除当前 GNOME 终端窗口以外的所有其他 GNOME 终端窗口 如何在安装系统后设置短密码 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】 【webots安装使用教程】 Linux系统下查看当前运行的进程和线程的几种方法

小秋 AI SLAM 入门实战教程 1400

spring——Spring Bean继承

小白龙白龙马的博客 197

华为od统一考试B卷【单词搜索】C++ 实现

找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。意区分英文字母大小写,并且您只能上下左右行走,不能走回头路。

MISAYAONE的博客 708

移花接木,玩转CANoe的几种扩展接口应用(五)——串口设备

近期看到粉丝朋友在CANoe自动化测试方面的关注度很大,今天就围绕这个做一个专题,总结一下以往项目上用过的几种CANoe扩展接口,分享出来希望对相关领域的网友有所帮助。本文是该专题的第五篇文章,主要讲解了串口设备的功能配置、连接方法、配置方法、调用方法,最后分析了这种扩展借口应用的特点和适用场景。

Mr.Cssust的博客 2369

Spring的IOC学习3(bean的作用域、利用工厂模式创建bean对象以及继承FactoryBean来创建bean)

bean对象的作用域: 在xml文件中可以通过scope属性设置当前bean的作用域 singleton:单例模式,从容器中获取到的都是同一个对象,默认的作用域。 prototype:多例模式,从容器中获取到的对象每一次都是新创建的。 创建时间: singleton:在创建IOC容器完成之前此对象就已经被创建 prototype:每次需要使用到此对象才会被创建 在spring4.x中还有两种作用域: request:每次发送请求都有一个新的对象 session:每一次

单俞浩的博客 408

华为OD机试 - 物流仓储多维度成本利润综合查询系统 - 二维数组(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。某物流企业在全国多个仓库开展仓储业务,需要对不同仓库、不同时段的入库成本、出库收入和库存损耗进行综合统计分析,用于生成 日报、周报和月报。字段说明及取值范围如下:warehouses: int[] 扁平化数组 [w0d0in, w0d0out,

学Java,找哪吒 307

4.Bean简介

本文介绍了Spring框架中Bean实例化的四种方式:1)通过无参构造方法实例化,这是默认方式;2)通过简单工厂模式,使用factory-method指定静态工厂方法;3)通过factory-bean指定工厂对象及其实例方法;4)通过实现FactoryBean接口,自动调用getObject()方法创建Bean。每种方式都配有示例代码和测试结果,展示了Spring在Bean创建上的灵活性,可以根据不同场景选择合适的实例化策略。

u011488477的博客 725

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring框架中BeanFactory与FactoryBean的核心区别与应用

在Spring框架中,IOC容器和工厂模式是两个基础但关键的概念。BeanFactory作为Spring最基础的IOC容器接口,负责管理bean的生命周期和依赖注入,体现了控制反转的设计思想。而FactoryBean则是一种特殊的工厂模式实现,允许开发者自定义复杂对象的创建逻辑。理解这两者的区别对于掌握Spring核心原理至关重要。在实际开发中,BeanFactory适用于基础的依赖管理场景,而FactoryBean则常用于集成第三方库或创建复杂对象,如MyBatis的SqlSessionFactory。通

weixin_30655569的博客 357

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Spring【IOC】】——8、如何使用FactoryBean向Spring容器中注册bean?

一般情况下,Spring是通过反射机制利用bean的class属性指定实现类来实例化bean的。在某些情况下,实例化bean过程比较复杂,如果按照传统的方式,那么则需要在标签中提供大量的配置信息,配置方式的灵活性是受限的,这时采用编码的方式可以得到一个更加简单的方案。Spring为此提供了一个org.springframework.bean.factory.FactoryBean的工厂类接口,用户可以通过实现该接口定制实例化bean的逻辑。

zhouhengzhe的博客 1808

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spring中ApplicationContext和BeanFactory以及FactoryBean总结整理

Spring中ApplicationContext和BeanFactory以及FactoryBean总结整理

u014753478的博客 1436

【spring01】Spring 管理 Bean-IOC,基于 XML 配置 bean

Spring 最大的价值,通过配置,给程序提供需要使用的web 层

qq_74232707的博客 2658

【Spring详解五】bean的加载

外没有别的处理工作,根据分析,基本可以理清Spring处理循环依赖的解决办法,在B中创建依赖A时通过ObjectFactory提供的实例化方法来获取原始A,使B中持有的A仅仅是刚刚初始化并没有填充任何属性的A,而这初始化A的步骤还是刚刚创建A时进行的,但是因为A与B中的A所表示的属性地址是一样的所以在A中创建好的属性填充自然可以通过B中的A获取,这样就解决了循环依赖的问题。BeanFactory是最基本的抽象工厂,而其他的IOC容器只不过是具体的工厂,对应着各自的Bean定义方法。

叉烧钵钵鸡的博客 1255

Spring Bean创建流程

(Web请求范围)(Web会话范围)(ServletContext范围)/** 一级缓存: 存放完全初始化好的单例Bean *//** 三级缓存: 存放Bean工厂,用于创建早期Bean *//** 二级缓存: 存放早期暴露的Bean(已实例化,未填充属性) *//** 正在创建中的Bean名称集合 */// ========== 1. 自定义Scope实现 ==========@Override。

左灯右行的爱情 1488

spring源码深度解析---bean的加载(上)

spring源码深度解析—bean的加载(上) 1. 概述 前面我们已经分析了spring对于xml配置文件的解析,接下来我们将对bean的加载进行探索。bean的加载比配置文件的解析要复杂的多。还记得我们在测试读取配置文件后获取bean用的方法吗?context.getBean(“testContructor”),如下所示,这段代码具体实现了什么功能呢?接下来我们将详细分析下。 publi...

渔潭的博客 2315

spring 源码解读-FactoryBean与BeanFactory

spring 源码解读-FactoryBean与BeanFactory

杨宇昌的博客 304

Spring

Spring AOP通过动态代理技术实现横切逻辑的统一管理,核心概念包括切面(Aspect)、连接点(Join Point)、切入点(Pointcut)和通知(Advice)。当AOP失效时,通常由于直接调用目标对象而非代理对象,常见场景包括同类内部调用、private/static/final方法或非Spring管理的对象。 **IOC(控制反转)**将对象创建与依赖管理交给Spring容器,通过依赖注入(DI)实现解耦,推荐使用构造器注入。其核心是BeanFactory和ApplicationConte

qq_41893505的博客 1076

《Spring框架源码系列》--Spring创建bean的过程

11

lmj3732018的博客 9203

Spring源码学习(十)---FactoryBean的解析

这里主要是使用org.springframework:spring-beans:5.2.0.RELEASE进行分析 FactoryBean解析一.FactoryBean接口1. FactoryBean的使用方式 1. 查看源码相关的快捷键 快捷键 作用 Ctrl + Shift+i 出现类似于预览的小窗口 Ctrl + Enter (接上步)完全打开源码 Ctrl + 鼠标左键 一步到位打开源码 = Ctrl + Shift+i –>Ctrl + Enter Alt+7 .

414

【mybatis系列】spring是如何整合mybatis将Mapper接口注册为Bean的

【mybatis系列】spring是如何整合mybatis将Mapper接口注册为Bean的Spring整合MyBatis将Mapper接口注册为Bean的原理,主要是通过MapperScannerConfigurer (实现了BeanDefinitionRegistryPostProcessor接口)(或Spring Boot的自动配置)扫描Mapper接口,创建MapperFactoryBean的BeanDefinition实例,并注册到Spring容器中。

xzb5566的专栏 2204
上一篇: Spring-6.创建bean的三种方式
下一篇: java反射的field.get(null)
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值