【发布时间】:2011-10-29 07:29:12
【问题描述】:
在我的带有单个 Controller 类的 Spring MVC 应用程序中,
@Controller
public class MyController {
@RequestMapping(method = RequestMethod.POST, value = "/*.htm")
public myMethod{@RequestBody final MyRequestBean myRequest}
}
我的输入是 JSON 格式,我使用 Jackson 将其转换为 Java 对象。 现在,基于 Java 对象中的属性,我想发送到适当的服务类。 如果是的话,
myRequest.value == "1" -> FirstService
myRequest.value == "2" -> SecondService
所有这些服务类都将实现一个基本接口。 我不想在我的 Java 代码中进行这种实例化。如何将其移至配置文件。如何根据请求值动态注入这些对象。请注意,我正在使用注释。 我是Spring新手。请指教
编辑:包括我的解决方案
在我的 dispatcher.xml 中,
`<util:map id="myMap">
<entry key="service1" value="com.service.MyService1" />
<entry key="service2" value="com.service.MyService1" />
</util:map>`
在我的控制器中,
@Resource private Map myMap;
在控制器内部的方法中,MyService myService = (MyService) Class.forName((String)myMap.get(myRequest.getValue())).newInstance(); System.out.println("My value" + myService.doService());
可以看出,已经使用 Java 反射从我的 XML 返回的字符串中获取实例。这是正确的方法吗?
【问题讨论】:
标签: spring model-view-controller spring-mvc annotations inversion-of-control