gpt4 book ai didi

java - Spring:使模型可供 Controller 使用的正确方法?

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:02 29 4
gpt4 key购买 nike

给定以下 Controller ,

@Controller
public class MyController
{
...

@RequestMapping("/data")
public @RequestBody Data getData(@RequestParam String id)
{
return myCustomModel.queryForData(id);
}
}

配置它的正确方法是什么,以便 MyController 可以使用 myCustomModel (查询 Data 的内容)?我已经看到了 Autowiring 的这种奇妙之处,我也想这样做。

最佳答案

对于生产代码,明智的做法是显式声明依赖项而不是使用 Autowiring ,这样生产设置中的移动部件就会减少。这类似于仅使用完全限定的导入语句而不是 import my.super.project.dao.*

的良好实践

(顺便说一句, Autowiring 对于集成测试来说是一个非常有用的功能)

因此,要在生产中进行连接,一个好的方法是将普通的旧构造函数依赖项注入(inject)到最终字段中。尽可能使用最终字段 minimizes mutability .

服务类,通过注入(inject)接收daos:

public class CompanyService implements ICompanyService {

private final EmployeeDao employeeDao;
private final DepartmentDao departmentDao;

public CompanyService(EmployeeDao employeeDao, DepartmentDao departmentDao) {

this.employeeDao = employeeDao;
this.departmentDao = departmentDao;
}

...
}

然后 Controller 通过注入(inject)的方式接收服务(使用接口(interface)类型):

@Controller
public class MyController
{
private final ICompanyService companyService;

public MyController(ICompanyService companyService) {
this.companyService = companyService;
}

@RequestMapping("/data")
public @RequestBody Data getData(@RequestParam String id)
{
return companyService.queryForData(id);
}
}

关于java - Spring:使模型可供 Controller 使用的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550705/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com