java - Spring Requestmapping 的条件基于服务器端参数

标签 java spring-mvc aop

我有一个 Controller (Spring Controller ),它将向移动应用程序提供 json。

各种服务器运行我们的软件。并非所有内容都将配置为服务移动请求。

我添加了一个 Integer 类的 bean,其对象 ID 包含处理请求所需的各种系统参数。

此 bean 在 xml 中定义并 Autowiring 到 Controller 中。

Autowiring 使用 (required = false),因此我们可以在没有 xml 中定义的值的情况下运行。

我检查了一下,发现如果没有在xml中定义, Autowiring 的Integer确实为null。

我现在想做的是添加到我的 requestmappings 中,如果该 Integer 为 null,则添加到我的 requestmappings 中,如果 Integer 为 null,则添加到我的 requestmappings 中;如果 Integer 不为 null,则添加到常规方法(基本上,我们将回复一个标准的 json 错误)对象)。

这似乎对于某种 AOP 来说非常简单,但除了使用 Spring 之外我几乎没有经验。 Requestmapping 注释中的大多数条件信息似乎基于请求参数,而不是服务器端变量。

有什么想法吗?

最佳答案

我认为最好使用property-placeholder从类路径加载属性文件。通过这种方式,您可以在不同的服务器中部署相同的 war 文件,并为每个服务器使用不同的属性文件(将其放在 AS 类路径中)。
完成此操作后,您可以在 Controller 中使用变量(如果您想让 Controller 的代码保持干净,则可以在拦截器中使用变量)并执行如下操作:

@Controller
public class MyController{
    @Value("${mobile.enabled}")
    private boolean mobileEnabled;

@RequestMapping("/mobile")
public Object json(){
    if (!mobileEnabled)
        throw new IllegalStateException("This server can't do it!");
    }
    //create the json
    return result;
}

还有一个属性文件,例如:

mobile.enabled=true

当您想要启用它时,或者当您不想启用它时为 false。

关于java - Spring Requestmapping 的条件基于服务器端参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17445067/

相关文章:

java - 从方面函数访问被调用者类的数据成员

java - 参数化测试 TestNg - 如何避免 java 类失败?

java - 如何将数组列表转换为多维数组

java - android.database.sqlite.SQLiteException : near "UNION": syntax error

java - android firebase数据库如何从子节点检索所有数据

spring-mvc - 如何在 Spring MVC 中代理 HTTP 请求?

java - 无法弄清楚为什么 org.springframework.beans.factory.BeanCreationException

java - cloudbess部署应用后出现内部错误如何解决

spring-boot - Spring Boot + Spring 集成 Java DSL + AOP : Fails to proxy the Gateway interface

php - Controller 中的过滤方法