第一步需要在pom.xml文件指定需要导入的坐标
要是没有自动提示需要检查maven有没有
实现代码
/*springboot第三方自动配置实现方法 * 什么是自动配置 自动配置就是springboot启动自动加载的类不需要在手动的控制反转自动的加入bean中 * * */ /*第一种方案包扫描 不推荐因为繁琐自己也没有试成功过加在启动类上 @ComponentScan({"com.example","com.example.comtihmabc2"}*/ /* 第二种方案@Import注解导入加在启动类上 @Import({HeaderParser.class}) 导入普通类交给I0C容器管理 @Import({HeaderConfig.class})//导入配置类,交给I0C容器管理 示例代码: @Configuration public class HeaderConfig { @Bean public HeaderParser headerParser(){ return new HeaderParser();} @Bean public HeaderGenerator headerGenerator(){ return new HeaderGenerator(); } } @Import({MyImportSelector.class})//导入Importselector接口实现类 第三方所实现的接口ImportSelector 里面清楚的写明白了需要导入的类位置 示例代码: public class MyImportSelector implements ImportSelector { public String[] selectImports(AnnotationMetadata importingClassMetadata) { return new String[]{"com.example.HeaderConfig"}; } */ /*第三种方案自定义注解@EnableHeaderConfig加在启动类上 第三方自定义注解示例代码: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Import(MyImportSelector.class)//MyImportSelector.class表示所要导入的类可以是配置类 public @interface EnableHeaderConfig { } * */ @SpringBootApplication public class ComTihmaBc2Application { public static void main(String[] args) { SpringApplication.run(ComTihmaBc2Application.class, args); } }
执行代码示例
@SpringBootTest class ComTihmaBc2ApplicationTests { // //1.获取I0c容器对象 // @Autowired // ApplicationContext applicationContext; @Autowired //手动依赖注入 ApplicationContext applicationContext ; // @Test // void contextLoads() { // applicationContext.getBean(HeaderParser.class).parse(); // } @Test void contextLoads1() { applicationContext.getBean(HeaderGenerator.class).generate(); } } 自动装配条件判断
/*springboot自动配置条件判断注解满足条件才会执行 通常声名在类上或者方法上 * springboot底层自动配置就是用此方法 * */ @Configuration public class HeaderConfig { //注解1 /*判断环境中是否有对应字节码文件,才注册bean到I0C容器。可通过类型value或者名字name来进行判断 示例1 : @ConditionalOnClass(name ="io.jsonwebtoken.Jwts") 名字name 示例2 : @ConditionalOnClass(value = HeaderParser.class ) 通过类型value */ //注解2 /* @ConditionalOnMissingBean 当不存在当前类型的bean时, 才声明该bean才加入ioc容器 ---也可以指定类型(value属性)或 名称(name属性) 没有就是当前 比如 @ConditionalOnMissingBean public HeaderParser headerParser(){ return new HeaderParser();} */ /* @ConditionalOnProperty(name = "name",havingValue = "itheima") 配置文件中存在对应的属性和值,才注册bean到I0C容器 比如application.properties 配置文件中 # 应用服务 WEB 访问端口 server.port=8080 name=itheima 有就可以执行 */ @Bean @ConditionalOnProperty(name = "name",havingValue = "itheima") public HeaderParser headerParser(){ return new HeaderParser();} @Bean public HeaderGenerator headerGenerator(){ return new HeaderGenerator(); } }