1、假设我自定义注解 NameSpace
@Target(ElementType.METHOD) //指定注解的使用范围为 方法
@Retention(RetentionPolicy.RUNTIME) //运行时生效
public @interface NameSpace {
/**
* Name Space
*
* @return value
*/
String value();
}
2、在启动时继承 BeanPostProcessor,初始化Bean时会先调用这个接口的实现方法。 其中有postProcessAfterInitialization前置方法与postProcessBeforeInitialization后置方法,前置方法我们一般不去使用,我们在后置方法中,去解析这个注解,然后加上该有的功能
public class NameSpaceSpringAnnotationScanner implements BeanPostProcessor {
private final List<Class<? extends Annotation>> annotations =
Arrays.asList(OnConnect.class, OnDisconnect.class, OnEvent.class);
@Autowired
private SocketIOServer socketIOServer;
@Autowired
@Qualifier("evcs")
private SocketIOServer evcsSocketIOServer;
@Override
public Object postProcessAfterInitialization(Object bean, String be