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

在运行时在RestController上注册spring

公孙宸
2023-03-14

我正在搜索一个在运行时注册@RestController的解决方案。我目前正在向((GenericApplicationContext)applicationContext)注册bean。registerBeanDefinition(名称、beanDefinition) ,但我不能使用@RestController bean中指定的endpoint。

解决方案是什么?


共有1个答案

陈知
2023-03-14

我找到了解决办法。下面的帖子帮助了我:可以在Spring MVC中动态设置RequestMappings吗?

引用:“当初始化RequestMappingHandlerMapping时,它扫描上下文并创建它需要服务的所有@RequestMappings的映射(可能是出于性能原因)。如果您动态注册带有@Controller注释的bean,它们将不会被拾取。要重新触发此扫描,您只需要在添加bean后调用afterPropertiesSet()

这就是我的解决方案:

@Qualifier("requestMappingHandlerMapping") RequestMappingHandlerMapping mappingHandlerMapping
BeanDefinition beanDefinition = new AnnotatedGenericBeanDefinition(TestController.class);
//noinspection ConstantConditions
String name = AnnotationBeanNameGenerator.INSTANCE.generateBeanName(beanDefinition, null);
((GenericApplicationContext) applicationContext).registerBeanDefinition(name, beanDefinition);

mappingHandlerMapping.afterPropertiesSet();
 类似资料:
  • 我有一个具有两个endpoint的服务: 公共endpoint:任何人都可以访问它,并打开用户帐户(注册) 受保护endpoint:只有注册用户才能访问它,将授权头用作HTTP POST请求的一部分 用例: 用户首先到达公共endpoint并通过HTTP POST打开帐户,该JSON包含。然后服务生成密码,并将其作为JSON响应传递回用户。 用户从服务中拿回密码后,他应该使用这个(连同他的)通过在

  • 只需要社区评估的东西。下面是一段代码,这是一个创建特定类型实例的简单工厂。该方法将在上下文中注册bean作为原型并返回实例。这是我第一次在运行时配置bean。你能好心评估并提供反馈吗?事先谢谢你。 FLEX Sync工厂已在IoC容器中配置为单例。因此,要创建一个新的同步管理器,我需要执行以下操作: 我使用的是Spring 3.1。请回顾并提供宝贵的反馈。 亲切的问候。

  • 问题内容: 只需要一些由社区评估的东西。以下是一段代码,这是一个创建特定类型实例的简单工厂。该方法将在上下文中将bean注册为原型并返回实例。这是我第一次在运行时配置bean。您能否评价并提供反馈?先感谢您。 FLEX Sync工厂已在IoC容器中配置为单例。因此,要创建新的同步管理器,请执行以下操作: 我正在使用Spring 3.1。请查看并提供您宝贵的反馈意见。 亲切的问候。 问题答案: 这纯

  • 我试图在运行时动态创建POJO类并将它们映射到Hibernate。但是,我在第二部分失败了。 生成类文件后,我将其放置在Hibernate扫描POJO的位置。但它不起作用。 我再次尝试重建会话工厂,以便它可以接收新创建的文件,但这不起作用。重建会话工厂也不是一个好的/可扩展的解决方案。 Hibernate设置代码: 错误:

  • 我一直在尝试使用Espresso执行一个简单的UI测试,但所有测试都失败了,但有一个相同的例外: IllegalStateException:没有注册检测!必须在注册检测下运行 这里是使用eSpresso的初学者指南。我已经发现了类似的问题,但与我最相关的问题在这里没有得到回答--我想这是因为他们没有描绘出整个画面,所以这里是我的代码。我将只显示一个测试,因为它们都失败,错误完全相同: 这里是两个