首页 > 其他分享 >SpringBoot11(@Improt注解)

SpringBoot11(@Improt注解)

时间:2022-11-16 22:15:42浏览次数:36  
标签:Configuration SpringBoot11 void class TestA Import 注解 Improt public

一、介绍@improt

1-@Import注解的作用是什么?

通过导入的方式,来实现把"实例"加入Spring容器中的功能。

2-@Import注解能够导入哪些类?

可以导入普通类;
可以和@Configuration注解的类搭配使用;
可以和实现了ImportSelector和ImportBeanDefinitionRegistrar接口的类搭配使用

3-@Import注解能够添加到哪些类上?

@Import注解可以添加在自定义的注解
@SpringBootApplication(启动类)
@Configuration(配置类)
@Component(组件类)所注解的类上(@RestController、@Service、@Repository都属于@Component)

目的:从而实现将"实例"加入到Spring容器中的功能。

二、(1)普通类

  • 新建一个TestA
public class TestA {
    public void fun(String str) {
        System.out.println(str);
    }
 
    public void printName() {
        System.out.println("类名 :" + Thread.currentThread().getStackTrace()[1].getClassName());
    }

  • 新建一个ImportConfig,在类上面加上@Configuration,加上@Configuration是为了能让Spring 扫描到这个类,并且直接通过@Import引入TestA类
@Import({TestA.class})
@Configuration
public class ImportConfig {
}
  • 测试
  • TestA 是一个普通的类,现在可以被@Autowired注释然后调用,就直接说明已经被Spring 注入并管理了,普通的类都是需要先实例化.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ApplicationMain.class)
public class ImportAnnotionTest {
 
    @Autowired
    TestA testA; //可以发现,这个类生成了对象,就是因为Import注解的功劳
 
    @Test
    public void TestA() {
        testA.printName();
    }
}


(2)导入带有@Configuration的配置类

  • 新建TestB
@Configuration
public class TestB {
    public void fun(String str) {
        System.out.println(str);
    }
 
    public void printName() {
        System.out.println("类名 :" + Thread.currentThread().getStackTrace()[1].getClassName());
    }
}
  • 在ImportConfig.class里面直接引入TestB
@Import({TestA.class,TestB.class})
@Configuration
public class ImportConfig {
}
  • 测试结果
  • TestB.class 的类上面已经有了@Configuration注解,本身就会配spring扫到并实例化,@import引入带有@Configuration的配置文件,是需要先实例这个配置文件再进行相关操作
@Autowired
TestB testB;

@Test
public void TestB(){
   testB.printName();
}



(3)通过ImportSelector 方式导入的类

  • 新建TestC
public class TestC {
    public void fun(String str) {
        System.out.println(str);
    }
 
    public void printName() {
        System.out.println("类名 :" + Thread.currentThread().getStackTrace()[1].getClassName());
    }
}
  • 新建SelfImportSelector.class 实现ImportSelector 接口,注入TestC.class

//TODO ImportSelector 相关解释
 
public class SelfImportSelector implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[]{"com.test.importdemo.TestC"};
    }
}
  • ImportConfig上面引入SelfImportSelector.class
@Import({TestA.class,TestB.class,SelfImportSelector.class})
@Configuration
public class ImportConfig {
}
  • 测试
@Autowired
TestC testC;
 
@Test
public void TestC() {
    testC.printName();
}

小结:@improt就是为了把一个"实例"加入到SpringBoot容器中,可以被Spring调用和使用

标签:Configuration,SpringBoot11,void,class,TestA,Import,注解,Improt,public
From: https://www.cnblogs.com/chen-zhou1027/p/16897678.html

相关文章

  • Spring注解开发
    1、使用注解需要导入的依赖1、1在application.xml文件中加入该约束xmlns:context=http://www.springframework.org/schema/contexthttp://www.springframew......
  • Spring--注解开发定义Bean
    注解开发先看一看之前的bean的做法:所谓注解开发,当然就要用到注解啊,就是在BookDao接口的实现类里面进行注解的定义如图所示:而在.xml文件里面,就需要进行这样一个操作:......
  • Java @Data注解
    1、@Data注解是lombok.jar包下的注解,该注解通常用在实体bean上,不需要写出set和get方法,但是具备实体bean所具备的方法,简化编程提高变成速度。 2、@Data相当于@Getter@Sett......
  • eclipse导入项目时lombok包(@Data、@Slf4j...)注解无效
    1、找到maven仓库lombok的jar包位置,或者在lombok官网(https://www.projectlombok.org/download)下载lombok的jar包2、打开cmd,运行javaw-jarlombok.jar(lombok的jar包全......
  • 通过注解实现限流
    方法一:  springaop通过springaop配置需要扫描的包,配置切点切面,在切点前后获取方法的注解,如果有限流器注解则调用注解参数对应的限流器方法二:  javaagent+ j......
  • SpringBoot 11: Spring + SpringMVC + SpringBoot常用注解总结
    创建对象的:@Controller: 放在类的上面,创建控制器对象,注入到容器中@RestController: 放在类的上面,创建控制器对象,注入到容器中作用:是@Controller@ResponseBody......
  • Java注解
    1.@PostConstruct可作用在方法上。在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。可作为一些数据的常规化加载,比如数据字典。2.......
  • java 使用注解+Aop+redis实现防止重复提交
    防止重复提交的方式有很多可以用数据库的唯一索引,保证数据完整性在业务层用select....forupdate,依然是使用数据库的事务来做的使用注解+拦截器HandlerInt......
  • Spring&SpringBoot常用注解总结
    title:Spring&SpringBoot常用注解总结date:2022-11-1509:11:45tags:1.@SpringBootApplication这里先单独拎出@SpringBootApplication注解说一下,虽然我们一般不会......
  • Java注解与原理分析
    目录一、注解基础二、注解原理三、常用注解1、JDK注解2、Lombok注解四、自定义注解1、同步控制2、类型引擎五、参考源码使用的太多,被忽略的理所当然;一、注解基础注解......