在Spring Web中,如何获取@RestController的完整URL?

时间:2018-04-11 16:10:26

标签: java spring

让我说我将一个ApplicationContext注入一个bean。然后,我可以发现所有使用RestController注释的bean。我如何发现与所述bean关联的基本URL?

示例:

@Component
public class ServiceEnumerator {
  @Autowired
  private ApplicationContext context;

  @PostConstruct
  private void postConstruct() {
    final Map<String, Object> beansToExpose = context.getBeansWithAnnotation(RestController.class);
  }
}

2 个答案:

答案 0 :(得分:0)

根据标准,需要在配置文件中设置基本URL(上下文根)。 不确定下面是否会帮助你....尝试在控制器中注入HttpServletRequest然后从控制器,将其传递给所需的服务

@Context
private HttpServletRequest httpRequest;

LOGGER.info("URL "+httpRequest.getRequestURI());
如果您的网址为http://localhost:8080/services/v1/hello

将提供/ services / v1 / hello

答案 1 :(得分:0)

这可以通过从bean工厂检索bean定义并解析其元数据来实现。例如:

  • 从您的应用程序上下文中检索beanFactory
  • 从bean工厂获取bean定义
  • 检索其元数据
  • 获取属性     metadata.getAnnotationAttributes( "org.springframework.web.bind.annotation.RestController")