有条件地公开 Spring 网络服务操作

Conditionally expose Spring web service operation

我们在我们的应用程序中使用 Spring 网络服务,并且需要进行一项新操作,用于内部测试,仅在我们的开发和测试环境中可用。我知道如何在 Axis 中处理这样的要求(我们有一个这样的模块,我们只需在 wsdd 的 "allowedMethods" 参数中添加或删除操作)但我不知道如何在 Spring,并且在网上搜索时运气不佳。我们有什么选择?

Spring 个人资料将帮助您:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

@Configuration
@Profile("dev")
public class ProductionConfiguration {

    // ...

}

您可以在 Bean 上使用配置文件:

@Component
@Profile("dev")
public class DevDatasourceConfig

或在 XML:

<beans profile="dev">
    <bean id="devDatasourceConfig"
      class="org.baeldung.profiles.DevDatasourceConfig" />
</beans>

您还可以指定 WebApplicationInitializer 使用的配置文件:

@Configuration
public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.setInitParameter("spring.profiles.active", "dev");
    }
} 

@Autowired
private ConfigurableEnvironment env;
...
env.setActiveProfiles("dev");

或web.xml:

<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>dev</param-value>
</context-param>

或JVM参数:

-Dspring.profiles.active=dev

或环境变量:

export spring_profiles_active=dev