我有一个控制器(Spring Controller),可以将json提供给移动应用程序。
各种服务器运行我们的软件。并非所有内容都配置为提供移动请求。
我添加了一个Integer类的bean,其对象的id包含处理请求所需的各种系统参数。
此bean在xml中定义并自动连接到控制器中。
自动装配使用(required = false),因此我们可以在没有xml中定义的值的情况下运行。
我已检查并发现如果未在xml中定义,则自动装配的Integer确实为null。
我现在要做的是添加到我的请求映射中,如果该Integer为null,则匹配一个方法;当Integer不为null时,将添加常规方法(基本上,我们将使用标准json错误回复对象)。
对于某种AOP来说,这似乎很简单,但除了使用Spring之外,我几乎没有什么经验。 Requestmapping注释中的大多数条件信息似乎都基于请求参数,而不是服务器端变量。
有什么想法吗?
答案 0 :(得分:0)
我认为最好使用property-placeholder
从类路径加载属性文件。通过这种方式,您可以在不同的服务器中部署相同的 war 文件,并为每个服务器使用不同的属性文件(将其放在AS类路径中)。
一旦你这样做,你可以在你的控制器中使用一个变量(或者如果你想让控制器的代码保持干净,可以在拦截器中使用)并执行以下操作:
@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。