我正在尝试从控制器调用以下服务:
@Service
class MyMailService {
private final SendGrid sendGrid;
@Inject
public SendGridMailService(SendGrid sendGrid) {
this.sendGrid = sendGrid;
}
void sendMail() {
Request request = new Request();
Response response = this.sendGrid.api(request);
}
}
和我的控制器:
# controller
public String index(Model model) {
MyMailService.sendMail() // how to do this properly?
return "register";
}
从控制器调用它的正确方式是什么?基本上,我尝试“自动配置”sendgrid,这样就不必在每次调用MyMailService类时使用API键初始化SendGrid对象。
发布于 2018-07-28 06:57:58
正如其他人所建议的那样,我也认为你需要花更多的时间学习Java和Spring基础知识。但是为了回答你的问题,你可以在控制器中自动连接/注入你的service
单例对象来使用它:
@Controller
public class ControllerA
{
.
.
.
@Autowired
private MyMailService mymailService; //singleton object instance injected to be used/shared by all controllers
public String index(Model model) {
mymailService.sendMail()
return "register";
}
.
.
.
}
发布于 2018-07-28 08:23:57
您可以通过以下方式调用您的服务
1)只需将@Autowired添加到您的类类型中
@Autowired
MyMailService myMailService;
2)如下使用构造函数注入:
MyMailService myMailService;
@Autowired
public WebController(MyMailService myMailService) {
this.myMailService = myMailService;
}
- here i assumed my Controller name is WebController
3)如下使用Setter注入:
MyMailService myMailService;
@Autowired
public void setMyMailService(MyMailService myMailService) {
this.myMailService = myMailService;
}
最后,在你的控制器中,你可以像下面这样调用你的服务类方法。
myMailService.sendMail();
注意:遵循命名约定。
https://stackoverflow.com/questions/51566249
复制相似问题