Commit df4576b4 authored by liaozan's avatar liaozan 🏀

Remove @Component annotation

parent 8a5032c6
......@@ -5,16 +5,14 @@ import org.springframework.stereotype.Component;
import java.lang.annotation.*;
@Component
@Documented
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface CanalEventListener {
/**
* bean name
* @return
*/
@AliasFor(annotation = Component.class)
String value() default "";
......
......@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
......@@ -17,7 +18,6 @@ import org.springframework.core.annotation.Order;
* 启动配置类
*
* @author zhuyf
* @date 2022/6/16
*/
@Slf4j
public class CanalClientConfiguration {
......@@ -27,17 +27,18 @@ public class CanalClientConfiguration {
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public BeanUtil beanUtil() {
return new BeanUtil();
public BeanUtil beanUtil(ApplicationContext context) {
return new BeanUtil(context);
}
@Bean
@ConditionalOnMissingBean(CanalClient.class)
private CanalClient canalClient(ConfigurableBeanFactory configurableBeanFactory) {
private CanalClient canalClient(ConfigurableBeanFactory beanFactory) {
log.info("starting canal client....");
TransponderFactory factory = MessageTransponders.defaultMessageTransponder();
CanalClient client = new SimpleCanalClient(schbrainCanalConfig,factory,configurableBeanFactory);
CanalClient client = new SimpleCanalClient(schbrainCanalConfig, factory, beanFactory);
client.start();
return client;
}
}
package com.schbrain.canal.client.conf;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Canal配置
*
* @author zhuyf
* @date 2022/6/16
* @since 2022/6/16
*/
@Component
@Data
@ConfigurationProperties(prefix = "canal.client")
public class SchbrainCanalConfig {
......@@ -19,19 +21,4 @@ public class SchbrainCanalConfig {
*/
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;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author zhuyf
* @date 2022/6/16
* @since 2022/6/16
*/
@Component
public class BeanUtil implements ApplicationContextAware {
public class BeanUtil {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
BeanUtil.applicationContext = applicationContext;
public BeanUtil(ApplicationContext context) {
applicationContext = context;
}
/**
* get bean
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(Class<T> clazz) {
T obj;
public static <T> T getBean(Class<T> type) {
T bean;
try {
obj = applicationContext.getBean(clazz);
bean = applicationContext.getBean(type);
} catch (Exception e) {
obj = null;
bean = null;
}
return obj;
return bean;
}
/**
* get bean list
* @param clazz
* @param <T>
* @return
*/
public static <T> List<T> getBeansOfType(Class<T> clazz) {
Map<String, T> map;
public static <T> List<T> getBeansOfType(Class<T> type) {
Map<String, T> beanMap;
try {
map = applicationContext.getBeansOfType(clazz);
beanMap = applicationContext.getBeansOfType(type);
} 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
* @param anno
* @return
*/
public static Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> anno) {
Map<String, Object> map;
public static Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType) {
Map<String, Object> beanMap;
try {
map = applicationContext.getBeansWithAnnotation(anno);
beanMap = applicationContext.getBeansWithAnnotation(annotationType);
} 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