本文主要是介绍String boot 发布事件用法 使用ApplicationEvent和Listener来业务解耦,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、新建一个实体对象
package com.example.demo.model;import lombok.Data;@Data
public class UserModel {//用户名private String name;//密码private String password;}
二、新建一个Service以及控制器
UserService .java
package com.example.demo.service;import com.example.demo.model.UserModel;public interface UserService {/*** 用户注册* @param userModel*/void register(UserModel userModel);}
UserServiceImpl.java
package com.example.demo.service.impl;import com.example.demo.event.UserRegisterEvent;
import com.example.demo.model.UserModel;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService {@AutowiredApplicationContext applicationContext;@Overridepublic void register(UserModel userModel) {userModel.setName("小明");userModel.setPassword("123456");applicationContext.publishEvent(new UserRegisterEvent(this,userModel));}
}
TestController.java
@Autowiredprivate UserService userService;@GetMapping(value = "/test2")public Object test2() {UserModel userModel = new UserModel();userService.register(userModel);return "success";}
三、新建一个UserRegisterEvent类用于发布事件
package com.example.demo.event;import com.example.demo.model.UserModel;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;@Getter
public class UserRegisterEvent extends ApplicationEvent {private UserModel userModel;public UserRegisterEvent(Object source, UserModel userModel) {super(source);this.userModel = userModel;}
}
四、使用@EventListener注解的方式来监听发布事件
package com.example.demo.listener;import com.example.demo.event.UserRegisterEvent;
import com.example.demo.model.UserModel;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;@Component
public class AnnotationRegisterListener {@EventListenerpublic void register(UserRegisterEvent userRegisterEvent){//获取注册用户对象UserModel user = userRegisterEvent.getUserModel();//../省略逻辑//输出注册用户信息System.out.println("@EventListener注册信息,用户名:"+user.getName()+",密码:"+user.getPassword());}
}
运行结果如下
@EventListener注册信息,用户名:小明,密码:123456
这篇关于String boot 发布事件用法 使用ApplicationEvent和Listener来业务解耦的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!