Commit df4576b4 authored by liaozan's avatar liaozan 🏀

Remove @Component annotation

parent 8a5032c6
...@@ -5,16 +5,14 @@ import org.springframework.stereotype.Component; ...@@ -5,16 +5,14 @@ import org.springframework.stereotype.Component;
import java.lang.annotation.*; import java.lang.annotation.*;
@Component
@Documented
@Target({ElementType.TYPE}) @Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface CanalEventListener { public @interface CanalEventListener {
/** /**
* bean name * bean name
* @return
*/ */
@AliasFor(annotation = Component.class) @AliasFor(annotation = Component.class)
String value() default ""; String value() default "";
......
...@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
...@@ -17,7 +18,6 @@ import org.springframework.core.annotation.Order; ...@@ -17,7 +18,6 @@ import org.springframework.core.annotation.Order;
* 启动配置类 * 启动配置类
* *
* @author zhuyf * @author zhuyf
* @date 2022/6/16
*/ */
@Slf4j @Slf4j
public class CanalClientConfiguration { public class CanalClientConfiguration {
...@@ -27,17 +27,18 @@ public class CanalClientConfiguration { ...@@ -27,17 +27,18 @@ public class CanalClientConfiguration {
@Bean @Bean
@Order(Ordered.HIGHEST_PRECEDENCE) @Order(Ordered.HIGHEST_PRECEDENCE)
public BeanUtil beanUtil() { public BeanUtil beanUtil(ApplicationContext context) {
return new BeanUtil(); return new BeanUtil(context);
} }
@Bean @Bean
@ConditionalOnMissingBean(CanalClient.class) @ConditionalOnMissingBean(CanalClient.class)
private CanalClient canalClient(ConfigurableBeanFactory configurableBeanFactory) { private CanalClient canalClient(ConfigurableBeanFactory beanFactory) {
log.info("starting canal client...."); log.info("starting canal client....");
TransponderFactory factory = MessageTransponders.defaultMessageTransponder(); TransponderFactory factory = MessageTransponders.defaultMessageTransponder();
CanalClient client = new SimpleCanalClient(schbrainCanalConfig,factory,configurableBeanFactory); CanalClient client = new SimpleCanalClient(schbrainCanalConfig, factory, beanFactory);
client.start(); client.start();
return client; return client;
} }
} }
package com.schbrain.canal.client.conf; package com.schbrain.canal.client.conf;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**
* Canal配置 * Canal配置
*
* @author zhuyf * @author zhuyf
* @date 2022/6/16 * @since 2022/6/16
*/ */
@Component @Data
@ConfigurationProperties(prefix = "canal.client") @ConfigurationProperties(prefix = "canal.client")
public class SchbrainCanalConfig { public class SchbrainCanalConfig {
...@@ -19,19 +21,4 @@ public class SchbrainCanalConfig { ...@@ -19,19 +21,4 @@ public class SchbrainCanalConfig {
*/ */
private Map<String, CanalClientConfig> instances = new LinkedHashMap<>(); private Map<String, CanalClientConfig> instances = new LinkedHashMap<>();
/**
* 获取实例列表
* @return
*/
public Map<String, CanalClientConfig> getInstances() {
return instances;
}
/**
* 设置实例列表
* @param instances
*/
public void setInstances(Map<String, CanalClientConfig> instances) {
this.instances = instances;
}
} }
package com.schbrain.canal.client.utils; package com.schbrain.canal.client.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* @author zhuyf * @author zhuyf
* @date 2022/6/16 * @since 2022/6/16
*/ */
@Component public class BeanUtil {
public class BeanUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext; private static ApplicationContext applicationContext;
@Override public BeanUtil(ApplicationContext context) {
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { applicationContext = context;
BeanUtil.applicationContext = applicationContext;
} }
/** /**
* get bean * get bean
* @param clazz
* @param <T>
* @return
*/ */
public static <T> T getBean(Class<T> clazz) { public static <T> T getBean(Class<T> type) {
T obj; T bean;
try { try {
obj = applicationContext.getBean(clazz); bean = applicationContext.getBean(type);
} catch (Exception e) { } catch (Exception e) {
obj = null; bean = null;
} }
return obj; return bean;
} }
/** /**
* get bean list * get bean list
* @param clazz
* @param <T>
* @return
*/ */
public static <T> List<T> getBeansOfType(Class<T> clazz) { public static <T> List<T> getBeansOfType(Class<T> type) {
Map<String, T> map; Map<String, T> beanMap;
try { try {
map = applicationContext.getBeansOfType(clazz); beanMap = applicationContext.getBeansOfType(type);
} catch (Exception e) { } catch (Exception e) {
map = null; beanMap = null;
} }
return map == null ? null : new ArrayList<>(map.values()); return beanMap == null ? null : new ArrayList<>(beanMap.values());
} }
/** /**
* get with annotation * get with annotation
* @param anno
* @return
*/ */
public static Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> anno) { public static Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType) {
Map<String, Object> map; Map<String, Object> beanMap;
try { try {
map = applicationContext.getBeansWithAnnotation(anno); beanMap = applicationContext.getBeansWithAnnotation(annotationType);
} catch (Exception e) { } catch (Exception e) {
map = null; beanMap = null;
} }
return map; return beanMap;
} }
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment