第一步需要在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(); }
}











