在我的具有单个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
所有这些Service类都将实现一个基本接口。我不想在我的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());
MyService myService = (MyService) Class.forName((String)myMap.get(myRequest.getValue())).newInstance(); System.out.println("My value" + myService.doService());
可以看出,已经使用Java反射从XML返回的字符串中获取实例。这是正确的方法吗?
RequestAttributes
@Scope("request")
这应该使控制器变得容易。但这是一个丑陋的方法。这是另一个:
List<YourInterface>
getImplementationId()
这种变化可以是:
Map<String, YourInterface>
然后按键查找