首页 > 其他分享 >@Import注解

@Import注解

时间:2023-06-16 19:22:31浏览次数:29  
标签:容器 spring bean 注解 Import class

1.前言

 在之前关于springBoot 自动装配一文里,曾经写过里面有一个很关键的注解,就是@Import ,它让springBoot可以将spring.factories中的各组件的配置类加载到spring容器中,那么今天来讲下关于这个注解的一些了解。

2.import注解讲解

2.1@Import注解的作用

  向spring容器中添加实体,大家应该都会。最常用的如在类上加入@Compoment,@Service,@Controller 等注解,这些注解都会将类加载到spring容器中。而@Import注解也具备此功能,而且可以批量的进行,且更加灵活。

2.2@Import注解如何向spring容器中添加实体

 目前我知道的是三种方式。

   方式1:直接填class数组     如图:

 方式2:实现ImportSelector接口(springBoot的自动装配就是此方式)

  1.我们定义一个类,实现ImportSelector  接口。如下:

public class MyImportSelector implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[]{Test1.class.getName()};
    }
}

其中,返回值就是我们要装进spring容器中的类。

  2.我们通过@Import注解装载MyImportSelector类,如下,就可以将Test1类加载进容器中

 

 

方式3:实现ImportBeanDefinitionRegistrar接口

  1.我们定义一个类,实现ImportBeanDefinitionRegistrar 接口。如下:


public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
//指定bean定义信息(包括bean的类型、作用域...)
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Test1.class);
//注册一个bean指定bean名字(id)
registry.registerBeanDefinition("test1",rootBeanDefinition);
}
}

  2.我们通过@Import注解装载MyImportBeanDefinitionRegistrar 类,如下,就可以将Test1类加载进容器中

 

标签:容器,spring,bean,注解,Import,class
From: https://www.cnblogs.com/fuerming/p/17486303.html

相关文章

  • 注解 annotation
    内置注解@Override:重写@Deprecated:不推荐使用的@SupperessWarnings("all"):镇压警告元注解用于负责注解其他注解@Target:解释被描述的注解的使用范围@Retention:解释需要在什么级别保存被描述的注解信息(SOURCE<CLASS<RUNTIME)@Document:解释被描述的注解被......
  • Spring注解开发
    注解开发介绍:注解开发是spring的强项,实际开发过程中更多使用的是注解注入而非bean标签注入xml和注解开发的对比:xml可以适用任何场景,结构清晰,维护方便注解不是自己提供的类使用不了,开发简单方便建议使用xml和注解整合开发xml管理Bean注解完成属性注入使用过程中,可以......
  • [问题解决]:ImportError: /home/test/anaconda3/envs/py39/bin/../lib/libstdc++.so.6
    报错(py39)test@test:~/code/Face/test_speed$pythonface_yaw_pitc_roll.pyTraceback(mostrecentcalllast):File"/home/test/code/Face/test_speed/face_yaw_pitc_roll.py",line17,in<module>importdlibFile"/home/test/anacon......
  • 实现一个权限校验注解
    什么是注解?Java注解是附加在代码中的一些元信息,用于编译和运行时进行解析和使用,起到说明、配置的功能。注解不会影响代码的实际逻辑,仅仅起到辅助性的作用。包含在java.lang.annotation包中。注解的定义类似于接口的定义,使用@interface来定义,定义一个方法即为注解类型定义了一个元......
  • 采用注解方式-HTTP Status 404 – Not Found 或者 采用web
    采用注解方式->HTTPStatus404–NotFound或者采用web.xml方式->cannotresolvetheclassinthetag运行一个简单的servlet程序,分别采用了两种方式对servlet进行映射,均报错。1⃣️采用Annotation方式@WebServlet(name="DownloadServlet",urlPatterns="/download"......
  • pyautogui.screenshot('test.png') 报错:PyAutoGUI was unable to import pyscreeze (T
    根据提示需要importpyscreeze还需要Pillow.通过pip3list可以查看到已经安装PyScreeze==0.1.29但是不是我手动安装的,应该是Pillow或者pyautogui下载的时候依赖了pyscreeze并且安装了最新版本0.1.29。通过依赖树可以看到是pyautogui依赖了sudopip3installpipdeptree安装查......
  • SpringBoot使用自定义日志注解,配置切面
    1.使用技巧以下是需要注意的部分:在环绕通知中使用ProceedingJoinPoint,控制目标方法的运行。在其他通知类型中使用JoinPoint。如果使用JoinPoint则必须位于参数的第一位。ProceedingJoinPoint中有特殊的方法proceed()。当有多个切面时,使用@Order(11)来指定注解的优先级。......
  • SpringCache的常用注解-@CacheEvit
    从缓存中移除相应的数据,触发缓存删除操作value:缓存名称key:缓存的key规则,可以使用SpringEL,默认是方法参数组合beforeInvocation:缓存的清除在方法调用之前执行还是之后执行,默认为false参考如下代码:点击查看代码@Override@CacheEvict(value={"query1"},key=......
  • 【SpringBoot】注解
    Controller-@RestController-@RequestMapping("/path")Controller内方法@GetMapping("/path/{xxx}")@PostMapping("/path")POST处理函数参数@RequestBody//将Json体参数值按照参数名传入类内对应字段中GET处理函数参数@PathVariable//按名称获取请求路径中的变......
  • webStorm添加elementui注解
    https://element.eleme.io  添加成功后的效果 ......