CN116010038A - Spring框架的Bean对象管理方法、装置、电子设备及存储介质 - Google Patents
Spring框架的Bean对象管理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116010038A CN116010038A CN202310124962.7A CN202310124962A CN116010038A CN 116010038 A CN116010038 A CN 116010038A CN 202310124962 A CN202310124962 A CN 202310124962A CN 116010038 A CN116010038 A CN 116010038A
- Authority
- CN
- China
- Prior art keywords
- bean
- attribute
- bean object
- configuration file
- spring framework
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种Spring框架的Bean对象管理方法、装置、电子设备及存储介质。该方法包括:在Spring框架的配置文件中设置Bean参数;根据所述Bean参数,利用所述配置文件中的资源构建Bean对象;基于所述配置文件为所述Bean对象注入属性;基于所述Bean对象的属性,控制所述Bean对象完成生命周期。本申请实施例提供的Spring框架的Bean对象管理方法,在Spring框架的配置文件中设置Bean参数,根据所述Bean参数,利用所述配置文件中的资源构建Bean对象,基于所述配置文件为所述Bean对象注入属性,基于所述Bean对象的属性,控制所述Bean对象完成生命周期,从而实现了对Bean对象的有序高效管理,大大降低了应用程序运行过程的出错率,能够确保有效实现应用程序的正常功能。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种Spring框架的Bean对象管理方法、装置、电子设备及存储介质。
背景技术
Spring是一个开源框架,是为了解决企业应用开发的复杂性而创建的。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。对于基于Spring框架的应用程序,程序功能的实现过程中,需生成一系列的bean对象,通过操作这些bean对象来实现具体的功能。相关技术中存在的问题在于,Spring框架的Bean对象管理较为混乱,导致应用程序运行过程容易出错,影响应用程序的正常功能实现。
发明内容
本申请的目的是提供一种Spring框架的Bean对象管理方法、装置、电子设备及存储介质,能够解决相关技术中存在的Spring框架的Bean对象管理较为混乱,导致应用程序运行过程容易出错,影响应用程序的正常功能实现的问题。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
根据本申请实施例的一个方面,提供一种Spring框架的Bean对象管理方法,包括:
在Spring框架的配置文件中设置Bean参数;
根据所述Bean参数,利用所述配置文件中的资源构建Bean对象;
基于所述配置文件为所述Bean对象注入属性;
基于所述Bean对象的属性,控制所述Bean对象完成生命周期。
在本申请的一些实施例中,所述在Spring框架的配置文件中设置Bean参数,包括:
在所述Spring框架的配置文件中设置待构建Bean对象的标识、类全路径以及所述待构建Bean对象的类型和作用域。
在本申请的一些实施例中,所述根据所述Bean参数,利用所述配置文件中的资源构建Bean对象,包括:
调用所述配置文件中的Bean对象处理函数;
根据所述Bean对象处理函数获取对应于所述Bean参数的注解,所述注解包括属性名称和注解内容,所述注解内容包括资源的类型和资源的位置;
根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类;
将预先定义的抽象类中植入的资源内容关联到所述Bean参数所对应的属性名称中,得到对应于所述Bean参数的Bean对象。
在本申请的一些实施例中,基于所述配置文件为所述Bean对象注入属性,包括:
从所述配置文件中获取所述Bean对象的属性注入路径;
根据所述属性注入路径从对应的目标位置获取类文件;
将所述类文件构成的属性集合注入所述Bean对象中。
在本申请的一些实施例中,所述属性集合包括数组类型属性、List集合类型属性、Map集合类型属性和Set集合类型属性中的至少一种。
在本申请的一些实施例中,所述根据所述预定义函数获取Bean对象的注解,包括:
获取Bean对象的所有属性名称;
查找所有属性名称中的所有注解内容;
选取所有注解内容中的具有特定标识的注解内容;
获取所述具有特定标识的注解内容对应的属性名称以及所述具有特定标识的注解内容共同构成注解。
在本申请的一些实施例中,所述根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类,包括:
根据所述资源的类型获取资源内容中的属性名称以及对应的值,并以属性名称与值的数据对应格式植入预先定义的抽象类的列表中。
根据本申请实施例的另一个方面,提供一种Spring框架的Bean对象管理装置,包括:
标签设置模块,用于在Spring框架的配置文件中设置Bean参数;
Bean对象构建模块,用于根据所述Bean参数,利用所述配置文件中的资源构建Bean对象;
属性注入模块,用于基于所述配置文件为所述Bean对象注入属性;
控制模块,用于基于所述Bean对象的属性,控制所述Bean对象完成生命周期。
根据本申请实施例的另一个方面,提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述任一项所述的Spring框架的Bean对象管理方法。
根据本申请实施例的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以实现上述任一项所述的Spring框架的Bean对象管理方法。
本申请实施例的其中一个方面提供的技术方案可以包括以下有益效果:
本申请实施例提供的Spring框架的Bean对象管理方法,在Spring框架的配置文件中设置Bean参数,根据所述Bean参数,利用所述配置文件中的资源构建Bean对象,基于所述配置文件为所述Bean对象注入属性,基于所述Bean对象的属性,控制所述Bean对象完成生命周期,从而实现了对Bean对象的有序高效管理,大大降低了应用程序运行过程的出错率,能够确保有效实现应用程序的正常功能,解决了相关技术中存在的Spring框架的Bean对象管理较为混乱,导致应用程序运行过程容易出错,影响应用程序的正常功能实现的问题。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者,部分特征和优点可以从说明书中推知或毫无疑义地确定,或者通过实施本申请实施例了解。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了用于实现本申请实施例的Spring框架的Bean对象管理方法所应用的电子设备结构框图。
图2示出了本申请一个实施例的Spring框架的Bean对象管理方法流程图。
图3示出了图2中步骤S20的流程图。
图4示出了本申请一个实施例的Spring框架的Bean对象管理装置结构框图。
图5示出了图4中的Bean对象构建模块的结构框图。
图6示出了本申请一个实施例的计算机可读存储介质的示意图。
本申请的目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本申请做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
Spring框架使用基本的JavaBean来完成以前只可能由EJB完成的事情。Spring的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring Bean是Spring框架在运行时管理的对象。Spring Bean是Spring应用程序的基本构建块。在Spring工程中,各业务功能中具有各种变量标识。例如,消费列表中的消费场景变量标识,当消费场景变量=机票的时候需要加载机票的消费记录列表,当消费场景变量=酒店的时候需要加载酒店的消费记录列表,当消费场景变量=火车的时候需要加载火车的消费记录列表。
例如,最简单的一种针对变量有多种多样的形式体现,其逻辑表达形式如下:
if消费场景变量=机票
返回机票消费记录列表;
else if消费场景变量=酒店
返回酒店消费记录列表;
else if消费场景变量=火车
返回火车消费记录列表;
else
暂时无法识别具体消费场景类型,抛出异常。
又例如,对于变量的另一种形式体现可以包括:定义接口类型、通过枚举类查找接口对应的实现类、从Spring框架中获取Bean对象并存储至SERVICE_MAP当中,即查找接口所有的实现类。
在相关技术中,Spring框架中对Bean对象的管理较为混乱,导致应用程序运行过程容易出错,影响应用程序的正常功能实现;当变量有多种形式体现时,代码难以维护,程序容易出错,且代码扩展性不够灵活,代码重复性太大,每次都需要重新拷贝一份新的代码,然后对应位置进行修补,增加了重复劳动,提高了低质量代码的重复率。
针对相关技术中存在的问题,本申请实施例提供了一种Spring框架的Bean对象管理方法,在Spring框架的配置文件中设置Bean参数,根据Bean参数,利用配置文件中的资源构建Bean对象,基于配置文件为Bean对象注入属性;基于Bean对象的属性,控制Bean对象完成生命周期,实现了对Bean对象的有序高效管理,大大降低了应用程序运行过程的出错率,能够确保有效实现应用程序的正常功能。
本申请实施例提供的Spring框架的Bean对象管理方法可以应用于图1所示的电子设备10。电子设备10可以包括:处理器100,存储器101,总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接;存储器101中存储有可在处理器100上运行的计算机程序,处理器100运行该计算机程序时执行本申请实施例提供的Spring框架的Bean对象管理方法。
电子设备10可以是但不限于各种服务器、个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等。其中,存储器101可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还可以包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线102可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。其中,存储器101用于存储程序,处理器100在接收到执行指令后,执行该程序,前述本申请实施例任一实施方式揭示的方法可以应用于处理器100中,或者由处理器100实现。
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,可以包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成上述方法的步骤。
如图2所示,本申请的一个实施例提供了一种Spring框架的Bean对象管理方法,包括步骤S10至S40:
S10、在Spring框架的配置文件中设置Bean参数。
在一些实施方式中,S10包括:在所述Spring框架的配置文件中设置待构建Bean对象的标识、类全路径以及所述待构建Bean对象的类型和作用域。
在Spring框架中,Bean对象的作用域包括Bean实例是单实例或多实例。在Spring框架中,默认情况下,Bean对象的作用域是单实例对象。
在spring配置文件Bean参数里面有属性(scope)用于设置单实例还是多实例。通过设置scope属性值设置Bean对象的作用域。第一个值(也是默认值)singleton,表示是单实例对象。第二个值prototype,表示是多实例对象。设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象。设置scope值是prototype时候,不是在加载spring配置文件时候创建对象,在调用getBean方法的时候创建多实例对象。
S20、根据所述Bean参数,利用所述配置文件中的资源构建Bean对象。
在一些实施方式中,步骤S20可以包括以下步骤:从配置文件中调用接口,一个接口对应多个实现类映射;根据配置文件中的接口和调度标识,查找到调度实例;从配置文件的缓存数据中获取上述接口对应的所有实现类;将调度实例、所有实现类与Bean参数相结合,构成Bean对象。
具体地,从配置文件的缓存内容中获取上述接口对应的所有实现类,可以包括以下步骤:检测配置文件的缓存内容中是否具有实现类;若缓存内容中具有实现类,则从缓存内容中获取实现类;若缓存中没有实现类,则加一把全局锁,锁住所有访问find方法的资源,从而防止并发问题;锁住资源后,再次检测缓存中是否有实现类,有则从缓存的键值对中获取dispatchKey对应的实现类;锁住资源后,若再次检测缓存中没有,则初始化加载所有的实现类别SERVICE_CACHE当中去;确定init方法已经完成初始化加载,则直接从缓存内容中调取实现类。
示例性地,若缓存内容中具有实现类,则从缓存内容中获取实现类,可以包括:若缓存内容中具有键值对,则通过dispatchKey从键值对中获取对应的接口实现类。
参考图3所示,在另一些实施方式中,步骤S20包括步骤S201至S204:
S201、调用所述配置文件中的Bean对象处理函数。
具体地,调用配置文件中自定义扩展类中的Bean对象处理函数,Bean对象处理函数用于对Bean对象进行处理。
S202、根据所述Bean对象处理函数获取对应于所述Bean参数的注解,所述注解包括属性名称和注解内容,所述注解内容包括资源的类型和资源的位置。
该Spring调用Bean对象处理函数后,将在Bean对象处理函数中对资源内容进行读取,为了获取资源内容,需首先获取Bean对象的注解,该注解包括属性名称和注解内容。
在某些示例中,Spring中的注解主要分为两类,类级别的注解,如
@Component、@Repository、@Controller、@Service以及JavaEE6的
@ManagedBean和@Named注解,都是添加在类上面的类级别注解。类内部的注解,如@Bean、@Autowire、@Value、@Resource以及EJB和WebService相关的注解等,都是添加在类内部的字段或者方法上的类内部注解。
具体的来说又有以下几种类型的注解方式:
声明bean的注解:@Component组件,通用的注解方式;@Service在业务逻辑层使用(service层);@Repository在数据访问层使用(dao层);
@Controller在表现层使用,控制器的声明(C)。
注入bean的注解:@Autowired:由Spring提供;@Inject:由JSR-330提供;@Resource:由JSR-250提供;都可以注解在set方法和属性上,推荐注解在属性上。
java配置类相关注解:@Configuration声明当前类为配置类,相当于xml形式的Spring配置(类上);@Bean注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式;@Configuration声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上);@ComponentScan用于对Component进行扫描,相当于xml中的(类上);@WishlyConfiguration为@Configuration与@ComponentScan的组合注解,可以替代这两个注解。
切面(AOP)相关注解:Spring支持AspectJ的注解式切面编程。@Aspect声明一个切面(类上);使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。@After在方法执行之后执行(方法上)@Before在方法执行之前执行(方法上)@Around在方法执行之前与之后执行(方法上);@PointCut声明切点;在java配置类中使用。
@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)。
@Bean的属性支持:@Scope设置Spring容器如何新建Bean实例(方法上,得有@Bean),其设置类型包括:Singleton(单例,一个Spring容器中只有一个bean实例,默认模式),Protetype(每次调用新建一个bean),Request(web项目中,给每个http request新建一个bean),Session(web项目中,给每个http session新建一个bean),GlobalSession(给每一个global http session新建一个Bean实例);@StepScope在Spring Batch中还有涉及;
@PostConstruct由JSR-250提供,在构造函数执行完之后执行,等价于xml配置文件中bean的initMethod;@PreDestory由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中bean的destroyMethod。
Bean对象根据实现的功能不同,具有多个不同种类的属性名称。若需要对Bean对象的某一个属性名称进行加载资源,则需对该属性名称进行注解,经过注解之后将得到该属性名称对应的注解内容,该注解内容包括资源的类型和资源的位置。采用自定义注解的方式对需加载资源的属性名称进行注解,其自定义注解的内容中,包含有资源的类型、资源的位置,通过ResourceField对该属性名称进行注解,用于标记该属性名称需要加载资源。
S203、根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类。
由于资源文件有很多配置项,每个配置项都有一个唯一的标识,且每个配置项都是“属性名称:值”的形式,该配置项是一种数据形式,该资源文件则可以理解为多个配置项的集合,可以为表格等文件。将资源内容植入预先定义的抽象类即将资源内容加载进预先定义的抽象类中。
S204、将预先定义的抽象类中植入的资源内容关联到所述Bean参数所对应的属性名称中,得到对应于所述Bean参数的Bean对象。
在一些实施方式中,所述根据所述预定义函数获取Bean对象的注解,包括:获取Bean对象的所有属性名称;查找所有属性名称中的所有注解内容;选取所有注解内容中的具有特定标识的注解内容;获取所述具有特定标识的注解内容对应的属性名称以及所述具有特定标识的注解内容共同构成注解。
在一些实施方式中,所述根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类,包括:根据所述资源的类型获取资源内容中的属性名称以及对应的值,并以属性名称与值的数据对应格式植入预先定义的抽象类的列表中。
S30、基于所述配置文件为所述Bean对象注入属性。
在一些实施方式中,步骤S30包括:从所述配置文件中获取所述Bean对象的属性注入路径;根据所述属性注入路径从对应的目标位置获取类文件;将所述类文件构成的属性集合注入所述Bean对象中。
示例性地,所述属性集合包括数组类型属性、List集合类型属性、Map集合类型属性和Set集合类型属性中的至少一种。
为Bean对象注入属性(也称为依赖注入,即Dependency Injection),指的就是Spring在管理某个类的时候会将该类依赖的属性注入进来,也就是说在创建对象的过程中,向类里面的属性中设置值。
在一些实施方式中,DI依赖注入,就是注入属性(是IOC中一种具体实现,表示依赖注入),可以通过set方法注入属性。首先,创建类,定义类的属性和set方法;然后在spring的xml配置文件中输入set方法代码,完成属性注入。
在一些实施方式中,可以通过有参构造注入进行属性注入,创建类,定义属性和全参构造,然后创建service类和dao类,在service调用dao类的方法,并配置到spring配置文件中,对注入属性进行级联赋值。注入的属性可以包括数组类型属性、List集合类型属性、Map集合类型属性、Set集合类型属性中的至少一种。
另外,Spring框架中,为Bean对象注入属性可以包括构造方法注入、set方法注入和p名称空间注入。构造方法注入包括:创建Orders类,在spring配置文件中配置Orders类。set方法注入包括:创建Book类,定义属性和对应的set方法,为属性提供set方法。p名称空间注入可以包括:添加p名称空间到配置文件中,在Bean参数里面进行属性注入。使用p名称空间注入,可以简化xml配置方式。
S40、基于所述Bean对象的属性,控制所述Bean对象完成生命周期。
Bean生命周期为从Bean对象的创建到销毁的过程。Spring框架中的Bean对象从开始到结束要经历很多过程,但总体可以分为六个阶段Bean定义阶段、实例化、属性赋值、初始化、生存期和销毁阶段,而生命周期中的各个阶段又是与Bean对象的属性紧密关联的。根据Bean对象的属性可以控制Bean对象完成生命周期中的各个阶段。
本申请实施例提供的Spring框架的Bean对象管理方法,在Spring框架的配置文件中设置Bean参数,根据所述Bean参数,利用所述配置文件中的资源构建Bean对象,基于所述配置文件为所述Bean对象注入属性,基于所述Bean对象的属性,控制所述Bean对象完成生命周期,从而实现了对Bean对象的有序高效管理,大大降低了应用程序运行过程的出错率,能够确保有效实现应用程序的正常功能,解决了相关技术中存在的Spring框架的Bean对象管理较为混乱,导致应用程序运行过程容易出错,影响应用程序的正常功能实现的问题。
另外,本实施例的方法提高了应用程序的代码可扩展性,降低了低质量代码重复率,减少了人工重复劳动,降低了应用程序出错率,解决了相关技术中存在的以下技术问题:代码难以维护,程序容易出错,且代码扩展性不够灵活,代码重复性太大,每次都需要重新拷贝一份新的代码,然后对应位置进行修补,增加了重复劳动,提高了低质量代码的重复率。
如图4所示,本申请的另一个实施例提供了一种Spring框架的Bean对象管理装置,包括:
标签设置模块,用于在Spring框架的配置文件中设置Bean参数;
Bean对象构建模块,用于根据所述Bean参数,利用所述配置文件中的资源构建Bean对象;
属性注入模块,用于基于所述配置文件为所述Bean对象注入属性;
控制模块,用于基于所述Bean对象的属性,控制所述Bean对象完成生命周期。
在一些实施方式中,标签设置模块进一步具体用于:
在所述Spring框架的配置文件中设置待构建Bean对象的标识、类全路径以及所述待构建Bean对象的类型和作用域。
如图5所示,在一些实施方式中,Bean对象构建模块包括:
调用单元,用于调用所述配置文件中的Bean对象处理函数;
获取单元,用于根据所述Bean对象处理函数获取对应于所述Bean参数的注解,所述注解包括属性名称和注解内容,所述注解内容包括资源的类型和资源的位置;
加载单元,用于根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类;
关联单元,用于将预先定义的抽象类中植入的资源内容关联到所述Bean参数所对应的属性名称中,得到对应于所述Bean参数的Bean对象。
在一些实施方式中,属性注入模块包括:
路径获取单元,用于从所述配置文件中获取所述Bean对象的属性注入路径;
类文件获取单元,用于根据所述属性注入路径从对应的目标位置获取类文件;
注入单元,用于将所述类文件构成的属性集合注入所述Bean对象中。
示例性地,所述属性集合包括数组类型属性、List集合类型属性、Map集合类型属性和Set集合类型属性中的至少一种。
在一些实施方式中,所述根据所述预定义函数获取Bean对象的注解,包括:
获取Bean对象的所有属性名称;查找所有属性名称中的所有注解内容;选取所有注解内容中的具有特定标识的注解内容;获取所述具有特定标识的注解内容对应的属性名称以及所述具有特定标识的注解内容共同构成注解。
在一些实施方式中,所述根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类,包括:
根据所述资源的类型获取资源内容中的属性名称以及对应的值,并以属性名称与值的数据对应格式植入预先定义的抽象类的列表中。
本申请实施例提供的Spring框架的Bean对象管理装置,在Spring框架的配置文件中设置Bean参数,根据所述Bean参数,利用所述配置文件中的资源构建Bean对象,基于所述配置文件为所述Bean对象注入属性,基于所述Bean对象的属性,控制所述Bean对象完成生命周期,从而实现了对Bean对象的有序高效管理,大大降低了应用程序运行过程的出错率,能够确保有效实现应用程序的正常功能,解决了相关技术中存在的Spring框架的Bean对象管理较为混乱,导致应用程序运行过程容易出错,影响应用程序的正常功能实现的问题。
本申请的另一个实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述任一实施方式的Spring框架的Bean对象管理方法。
本申请实施例提供的电子设备与本申请实施例提供的方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以实现上述任一实施方式的Spring框架的Bean对象管理方法。参考图6所示,其示出的计算机可读存储介质为光盘20,其上存储有计算机程序(即程序产品),该计算机程序在被处理器运行时,会执行前述任意实施方式所提供的方法。
需要说明的是,计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
需要说明的是:
术语“模块”并非意图受限于特定物理形式。取决于具体应用,模块可以实现为硬件、固件、软件和/或其组合。此外,不同的模块可以共享公共组件或甚至由相同组件实现。不同模块之间可以存在或不存在清楚的界限。
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示例一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述实施例仅表达了本申请的实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种Spring框架的Bean对象管理方法,其特征在于,包括:
在Spring框架的配置文件中设置Bean参数;
根据所述Bean参数,利用所述配置文件中的资源构建Bean对象;
基于所述配置文件为所述Bean对象注入属性;
基于所述Bean对象的属性,控制所述Bean对象完成生命周期。
2.根据权利要求1所述的方法,其特征在于,所述在Spring框架的配置文件中设置Bean参数,包括:
在所述Spring框架的配置文件中设置待构建Bean对象的标识、类全路径以及所述待构建Bean对象的类型和作用域。
3.根据权利要求1所述的方法,其特征在于,所述根据所述Bean参数,利用所述配置文件中的资源构建Bean对象,包括:
调用所述配置文件中的Bean对象处理函数;
根据所述Bean对象处理函数获取对应于所述Bean参数的注解,所述注解包括属性名称和注解内容,所述注解内容包括资源的类型和资源的位置;
根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类;
将预先定义的抽象类中植入的资源内容关联到所述Bean参数所对应的属性名称中,得到对应于所述Bean参数的Bean对象。
4.根据权利要求1所述的方法,其特征在于,基于所述配置文件为所述Bean对象注入属性,包括:
从所述配置文件中获取所述Bean对象的属性注入路径;
根据所述属性注入路径从对应的目标位置获取类文件;
将所述类文件构成的属性集合注入所述Bean对象中。
5.根据权利要求4所述的方法,其特征在于,所述属性集合包括数组类型属性、List集合类型属性、Map集合类型属性和Set集合类型属性中的至少一种。
6.根据权利要求3所述的方法,其特征在于,所述根据所述预定义函数获取Bean对象的注解,包括:
获取Bean对象的所有属性名称;
查找所有属性名称中的所有注解内容;
选取所有注解内容中的具有特定标识的注解内容;
获取所述具有特定标识的注解内容对应的属性名称以及所述具有特定标识的注解内容共同构成注解。
7.如权利要求3所述的方法,其特征在于,所述根据所述资源的位置获取资源内容并将资源内容植入预先定义的抽象类,包括:
根据所述资源的类型获取资源内容中的属性名称以及对应的值,并以属性名称与值的数据对应格式植入预先定义的抽象类的列表中。
8.一种Spring框架的Bean对象管理装置,其特征在于,包括:
标签设置模块,用于在Spring框架的配置文件中设置Bean参数;
Bean对象构建模块,用于根据所述Bean参数,利用所述配置文件中的资源构建Bean对象;
属性注入模块,用于基于所述配置文件为所述Bean对象注入属性;
控制模块,用于基于所述Bean对象的属性,控制所述Bean对象完成生命周期。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-7中任一所述的Spring框架的Bean对象管理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以实现如权利要求1-7中任一所述的Spring框架的Bean对象管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310124962.7A CN116010038A (zh) | 2023-02-09 | 2023-02-09 | Spring框架的Bean对象管理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310124962.7A CN116010038A (zh) | 2023-02-09 | 2023-02-09 | Spring框架的Bean对象管理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010038A true CN116010038A (zh) | 2023-04-25 |
Family
ID=86033673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310124962.7A Pending CN116010038A (zh) | 2023-02-09 | 2023-02-09 | Spring框架的Bean对象管理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010038A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541105A (zh) * | 2023-07-06 | 2023-08-04 | 智慧眼科技股份有限公司 | 一种基于注解的组件加载方法、系统、终端及存储介质 |
-
2023
- 2023-02-09 CN CN202310124962.7A patent/CN116010038A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541105A (zh) * | 2023-07-06 | 2023-08-04 | 智慧眼科技股份有限公司 | 一种基于注解的组件加载方法、系统、终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853774B2 (en) | Dynamically loaded plugin architecture | |
US10740115B2 (en) | Structural identification of dynamically-generated, pattern-based classes | |
CN108062252B (zh) | 一种信息交互方法、对象管理方法及装置和系统 | |
Alglave | A formal hierarchy of weak memory models | |
US10346310B2 (en) | Cache block apparatus and methods | |
CN116010038A (zh) | Spring框架的Bean对象管理方法、装置、电子设备及存储介质 | |
CN111736884A (zh) | 组件化方法和系统 | |
US8745605B2 (en) | Execution contexts with polymorphic type implementations | |
CN108052335B (zh) | 数据管理方法、装置、计算设备及存储介质 | |
CN116126711A (zh) | 单元测试方法、装置及电子设备 | |
CN114721735B (zh) | 一种程序动态加载方法、装置及电子设备 | |
CN114588638A (zh) | 基于Lua语言进行游戏开发的方法及程序开发装置 | |
US20100064294A1 (en) | Maintaining Vitality of Data In Safety-Critical Systems | |
Musch | Singleton | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
Shafiei et al. | Modeling class loaders in java pathfinder version 7 | |
CN117369773A (zh) | 用于管理代码资源的方法、装置、设备和介质 | |
Deinum et al. | Spring Core Tasks | |
Noback et al. | The acyclic dependencies principle | |
Taylor et al. | Initialization and the Main Pattern | |
CN115185607A (zh) | 冷启动方法、装置、计算机设备、计算机可读存储介质 | |
CN114443116A (zh) | 依赖注入方法、装置、电子设备以及计算机可读存储介质 | |
Zaidi et al. | Creating Classes and Objects | |
Späth et al. | Classes and Objects: Extended Features | |
Yang | Mount and Update |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |