これは一種の「@Serviceアノテーションとは?」質問ですが、別のアプローチがあります。なぜなら、ここで何が起こっているのかわからないからです:
私はコントローラクラスを持っています:
@Controller
public class GreetingController {
@Autowired
SomeBean someBean;
@MessageMapping("/msg")
public String msg() {
someBean.handleMsg();
return "";
}
}
その中からsomeBean.handleMsg
宛先に応答を送信しようとします。このようなもの:
public class SomeBean {
@Autowired
private SimpMessagingTemplate messagingTemplate;
public handleMsg() {
messagingTemplate.convertAndSend("/topic/someTopic", "Response");
}
}
構成には2 つのバージョンがあります。
- SomeBean は.xmlで構成されます。
お気に入り:
< bean id="someBean" class="package.SomeBean"></bean>
- SomeBean はサービスとして注釈が付けられています(最初のものにはありません):
お気に入り:
@Service
public class SomeBean{...}
- これら 2 つのケースでは、インジェクションなどの問題はないことに注意してください。どちらのケースでも、クライアントは正常にサブスクライブされ、メッセージが送信され、メッセージが処理されます。
唯一 の違いは次のとおりです。
- アノテーションがある場合
SomeBean
は@Service
クライアントに正常に応答しますが、アノテーションがない場合、例外はありませんが、クライアントは応答メッセージを受信しません。
質問は次のとおりです。
- この場合、@Service は実際には何をしますか? 誰かがここで何が起こっているのか説明してもらえますか?