自定义starter改造
自定义starter改造
热插拔技术
新增标记类ConfigMarker
package com.duohoob.config;
public class ConfigMarker {
}
新增@EnableRegisterServer注解
package com.duohoob.config;
import org.springframework.context.annotation.Import;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(ConfigMarker.class) // spring的底层注解,给容器导入一个组件。
public @interface EnableRegisterServer {
}
修改自动配置类
向MyAutoConfiguration添加注解@ConditionalOnBean(ConfigMarker.class)
package com.duohoob.config;
import com.duohoob.bean.SimpleBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnBean(ConfigMarker.class) // 上下文中存在某个bean才会生效
public class MyAutoConfiguration {
@Bean
public SimpleBean simpleBean() {
return new SimpleBean();
}
}
在spring-boot-mytest启动类添加注解
package com.duohoob.springbootmytest;
import com.duohoob.config.EnableRegisterServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableRegisterServer
@SpringBootApplication
public class SpringBootMytestApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMytestApplication.class, args);
}
}
如果不加我们不想simpleBean被注册到容器中,不加@EnableRegisterServer就好了。