前言
<<手把手教你入门vue+springboot开发(十)–springboot集成WebSocket>>中UserServiceImpl类需要使用WebServerEndpoint类的方法去给WebSocket客户端发送消息,所以UserServiceImpl类中定义的webServerEndpoint成员变量使用了@Autowired注解。但是在深入研究过程中我们发现,如果WebServerEndpoint类也需要使用UserService的方法时就会出现问题。今天我们就结合这种使用场景来深入研究一下@Autowired注解。
一、@Autowired用于类的成员变量
@Autowired是一种注解,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,@Autowired注解可以放在成员变量上,也可以放在成员变量的set方法上,也可以放在任意方法上表示,自动执行当前方法,如果方法有参数,会在IOC容器中自动寻找同类型参数为其传值。它的作用是为了解决程序中对象之间的依赖关系。在Spring框架中,当你在一个类的成员变量上使用@Autowired注解后,Spring容器会自动地在应用程序的上下文中寻找该成员变量所对应的bean,并将其注入到该对象中。
<<手把手教你入门vue+springboot开发(十)–springboot集成WebSocket>>中就是这种用法,UserServiceImpl.java中代码如下:
@Autowired
private WebServerEndpoint webServerEndpoint;
@Override
public void sendLogin(String username) throws JsonProcessingException{
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> jsonMap = new HashMap<>();
jsonMap