当前位置: 首页 > 知识库问答 >
问题:

以编程方式将POJO转到@配置Spring

巴学潞
2023-03-14

给定一个类:

class MyConfiguration {
    @Bean
    String bean() {
        return new String();
    }
}

您可能注意到它没有@Configuration注释。

我如何使它表现得像有@Configuration注释,但不添加它?

@Bean注释不应在精简模式下工作,https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html

比如:

@Configuration
class MainConfiguration {
    @Bean
    MyConfiguration myConfiguration() {
        MyConfiguration myConfiguration = do_some_spring_magic();
        // myConfiguration behaving like it's having @Configuration here
        return myConfiguration;
    }
}

共有1个答案

楚志强
2023-03-14

我不明白你在这里试图实现的用例是什么...但是如果您正在寻找以编程方式将bean注册到Spring上下文中,那么您可以按照下面的方式进行。

@Configuration
public class MyBeanRegisterFactory implements BeanDefinitionRegistryPostProcessor, PriorityOrdered {

    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanRegistry) throws BeansException {
        //depending on some condition you can do the below line
        beanRegistry.registerBeanDefinition("myBeanClass", new RootBeanDefinition("com.mybean.MyBeanClass"));
    }

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;
    }
}

在你的例子中,类MyConfiguration中的bean定义可以通过编程方式注册到Spring上下文中。

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/support/BeanDefinitionRegistryPostProcessor.html

 类似资料:
  • 我在logback.xml中定义了一个logback appender,它是一个DB appender,但是我想知道是否有任何方法可以使用我自己定义为bean的连接池在java中配置appender。 我发现了类似的事情,但从来没有真正的答案。

  • 如何在Spring Boot应用程序中设置活动配置文件。该应用程序将部署在独立的Tomcat中。 我有2个属性文件应用程序-{profile}。属性。

  • 问题内容: 说我有两个JavaBeans 和。 如果创建一个Person对象的列表,我想编组成这样的东西: 可以使用这里描述的技术: 使用JAXB解组/编组List 通过使用和注释JaxbList,可以将其编组为上述XML。 但是,能够重用相同的类来封送对象列表也很好。实际上,我将有许多其他类型的bean。我可以这样: 但是,理想情况下,最好用类名的复数形式替换“列表”,用类名替换“ item”。

  • 什么是最简单的方法,以获得Spring引导好,但不试图自动配置所有的东西?例如,要只使用我们已经配置的属性(一些通过Consul+Spring Cloud加载)运行flyway,我希望可以做一些类似的事情: 并且让main方法只调用 这样做的问题是,它会拾取所有的组件扫描/其他依赖项的长列表。任何具体配置依赖项的方法(但仍然获得框架的nicities)

  • 问题内容: 我在logback.xml中定义了一个logback附加程序,它是一个数据库附加程序,但是我很好奇是否有任何方法可以使用定义为bean的我自己的连接池在java中配置附加程序。 我发现类似的事情,但没有实际答案。 问题答案: 这是一个对我有用的简单示例(请注意,在此示例中我使用FileAppender)

  • 我正在尝试使用我自己的应用程序实现或扩展的ResourceConfig或PackageResourceConfig来配置我的Jersey应用程序。因此,我的第一次尝试是将现有的web.xml(实际上,由于开发的库性质,我使用的是web-fragment.xml)配置移植到MyApplication实现。 当我使用第二个版本时,我会收到以下信息 正如您所看到的,是第一个注册的类,但由于它不是公共的,