我有一个 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/