我是基于注释的控制器的新手。我有两个像这样的servlet:
url的pathA-servlet:pathA / * url的pathB-servlet:pathB / *
我有一个控制器,如:
public class MyController extends SimpleFormController {
private MyService myService;
}
两个服务实现:
public class MyService1 implements MyService {
}
public class MyService2 implements MyService {
}
在pathA-servlet中:
<bean name="/doSomeThing" class="MyController">
<property name="myService" ref="myService"/>
</bean>
<bean id="myService" class="MyService1"/>
在pathB-servlet中:
<bean name="/doSomeThing" class="MyController">
<property name="myService" ref="myService"/>
</bean>
<bean id="myService" class="MyService2"/>
现在,我正在尝试使用基于注释的控制器:@ Controller,@ RequestMapping。我怎样才能做到这一点?
答案 0 :(得分:0)
这是一个示例@Controller。这是一个休息端点,您可以使用
访问它@Controller
@RequestMapping(method = RequestMethod.POST, value = "/my")
public class CopyOfMyController {
@Autowired
private MyService service;
@RequestMapping(method = RequestMethod.POST, value = "/hib")
public void haha(@ResponseBody RequestDTO dto) {
service.doSomething(dto);
}
}
你可以点击
Dto dto = new Dto();
dto.setPhone("12313");
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject(new URI("http://localhost:8080/my/hib"), dto, Dto.class);
答案 1 :(得分:0)
这非常简单。在控制器中,首先添加@Controller
注释。这个注释只是说这个类将是一个Spring控制器,它将能够根据控制器方法中定义的url映射来处理HTTP请求。
还为服务属性添加@Autowired
注释。由于有MyService
的2个实现,因此通过传递bean名称来添加@Qualifier
,因为Spring无法选择要注入的bean。
所以你可以这样做:
@Controller
public class MyController {
@Autowired
@Qualifier("bean1") // This should be bean1
private MyService myService1;
@Autowired
@Qualifier("bean2")
private MyService myService2;
@RequestMapping(value = "/doSomeThing1", method = RequestMethod.GET)
public String doSomething(){
return myService1.doSomething();
}
@RequestMapping(value = "/doSomeThing2", method = RequestMethod.GET)
public String doSomething(){
return myService2.doSomething();
}
}