ProjectEventAutoConfiguration.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package jnpf.config;
  2. import com.baomidou.lock.LockTemplate;
  3. import jnpf.consts.ProjectEventConst;
  4. import jnpf.event.*;
  5. import jnpf.handler.ProjectEventRedisMessageHandler;
  6. import jnpf.handler.ProjectEventRedisSender;
  7. import jnpf.event.ProjectEventSender;
  8. import jnpf.properties.EventProperty;
  9. import jnpf.util.PublishEventUtil;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  12. import org.springframework.boot.context.properties.ConfigurationProperties;
  13. import org.springframework.context.annotation.Bean;
  14. import org.springframework.context.annotation.Configuration;
  15. import org.springframework.data.redis.core.RedisTemplate;
  16. import org.springframework.data.redis.listener.RedisMessageListenerContainer;
  17. @Configuration(proxyBeanMethods = false)
  18. public class ProjectEventAutoConfiguration {
  19. @Bean
  20. @ConfigurationProperties(prefix = EventProperty.PREFIX)
  21. public EventProperty getEventProperties(){
  22. return new EventProperty();
  23. }
  24. @Bean
  25. public ProjectEventListenerAnnotationBeanPostProcessor getProjectEventListenerAnnotationBeanPostProcessor(){
  26. return new ProjectEventListenerAnnotationBeanPostProcessor();
  27. }
  28. @Bean
  29. public ProjectEventProccess getProjectEventProccess(LockTemplate lockTemplate, ConfigValueUtil configValueUtil){
  30. return new ProjectEventProccess(lockTemplate, configValueUtil);
  31. }
  32. @Bean
  33. @ConditionalOnProperty(prefix = "event", name = "event-publish-type", havingValue = ProjectEventConst.EVENT_PUBLISH_TYPE_REDIS, matchIfMissing = true)
  34. public ProjectEventRedisMessageHandler getProjectEventRedisMessageHandler(RedisMessageListenerContainer container, EventProperty eventProperty){
  35. return new ProjectEventRedisMessageHandler(container, eventProperty);
  36. }
  37. /**
  38. * 自定义事件发布渠道为QUEUE
  39. */
  40. @Bean
  41. @ConditionalOnProperty(prefix = "event", name = "event-publish-type", havingValue = ProjectEventConst.EVENT_PUBLISH_TYPE_REDIS, matchIfMissing = true)
  42. public ProjectEventRedisSender getProjectEventRedisSender(RedisTemplate redisTemplate, EventProperty eventProperty){
  43. return new ProjectEventRedisSender(redisTemplate, eventProperty);
  44. }
  45. @Bean
  46. public PublishEventUtil getPublishEventUtil(@Autowired(required = false) ProjectEventSender eventSender){
  47. return new PublishEventUtil(eventSender);
  48. }
  49. }