1

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

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

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

这个 bean 在 xml 中定义并自动装配到控制器中。

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

我检查并发现如果未在 xml 中定义,自动装配的 Integer 确实为 null。

我现在想做的是以一种方式添加到我的请求映射中,如果 Integer 为 null,则匹配一个方法,而当 Integer 不为 null 时匹配常规方法(基本上,我们将使用标准的 json 错误对象进行回复)。

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

有任何想法吗?

4

1 回答 1

2

我认为最好使用 aproperty-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

当你想启用它时,或者当你不想启用它时为假。

于 2013-07-03T11:05:23.080 回答