javascript
Spicy Spring:动态创建自己的BeanDefinition
當(dāng)我們有一個(gè)Spring托管的應(yīng)用程序時(shí),我們想讓Spring管理所有的bean。 除了使用已知解決方案(例如帶注釋的bean,Java配置和XML配置)創(chuàng)建bean的常規(guī)方法之外,還有一種方法可以用來(lái)創(chuàng)建自己的BeanDefinition 。
使用BeanDefinitionRegistryPostProcessor可以創(chuàng)建一個(gè)特定的后處理器,該處理器可以將BeanDefinition添加到BeanDefinitionRegistry 。
它不同于BeanPostProcessor ,其中只有掛鉤豆初始化(建設(shè)你的POJO的),其中BeanDefinitionRegistryPostProcessor對(duì)鉤BeanDefinitionRegistry 。 這使我們能夠定義自己的BeanDefinition 。
首先,我們創(chuàng)建示例中列出的BeanDefinitionRegistryPostProcessor實(shí)現(xiàn)。 我們實(shí)現(xiàn)了所需的方法,并將能夠?qū)⑽覀冏约旱腷ean定義添加到注冊(cè)表中。 定義的BeanDefinition將由ApplicationContext拾取,并將構(gòu)造POJO。 我們的結(jié)果是一個(gè)Spring托管的bean
package com.jdriven;import org.springframework.beans.BeansException; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.stereotype.Component;@Component public class LogicServiceRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)throws BeansException {RootBeanDefinition beanDefinition = new RootBeanDefinition(MyServiceImpl.class); //The service implementationserviceDefinition.setTargetType(MyService.class); //The service interfaceserviceDefinition.setRole(BeanDefinition.ROLE_APPLICATION);registry.registerBeanDefinition("myBeanName", beanDefinition );} }翻譯自: https://www.javacodegeeks.com/2015/04/spicy-spring-dynamically-create-your-own-beandefinition.html
總結(jié)
以上是生活随笔為你收集整理的Spicy Spring:动态创建自己的BeanDefinition的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 怎么启动联网快捷键设置(联网的快捷键)
- 下一篇: gradle idea java ssm