3 回答
TA贡献1735条经验 获得超5个赞
您所做的方式是完全错误的。这是一个工作代码,
@Controller
public class HomeController{
private final MyTest test;
@Autowired
public HomeController(MyTest test) {
this.test = test;
}
@RequestMapping("/")
public String home(){
test.draw();
return "homePage";
}
}
@RequestMapping应该/将要注释的方法的论点以Pathvariable或RequestParams的形式出现,或者只是HttpServletRequest对象本身的形式出现。这不是您自动装配实例的方式。
依赖注入在构造函数,字段和接口级别上工作。不在方法参数级别。希望它清除。
TA贡献1829条经验 获得超13个赞
您所做的是正确的,除了需要告诉Spring如何反序列化您的接口(即预期使用哪种具体的类实现。如果在MyTest实现中使用JSON序列化(通常是Spring的默认设置),请添加以下注释
@JsonDeserialize(as=MyTestImpl.class)
public interface MyTest {
...
另外,假设您使用的是Post方法,请将Controller更改为:
@PostMapping(value = "/",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public String home(MyTest test){
test.draw();
return "homePage";
}
(“产生”参数当然可以是text / html或您返回的任何东西)
添加回答
举报
