04、组件注册-@Import-使用

在Spring框架中,有几种主要的方式来向Spring IoC容器注册bean:

  1. 使用包扫描+注解(@ComponentScan 和 @Component):Spring会扫描指定的包及其子包,对于带有@Component、@Service、@Repository或@Controller等注解的类,Spring会自动注册它们的bean实例。
  2. 使用@Bean注解:这是在配置类中注册bean的一种方式。这对于第三方库的类非常有用,因为我们不能在这些类上添加@Component注解。通过在配置类中定义一个返回对象的方法,并使用@Bean注解,我们可以将这个方法的返回对象注册到Spring IoC容器中。
  1. 使用@Import注解:可以快速将一个或多个组件类导入到Spring容器中。使用@Import有三种方式:
  • 直接导入组件类
  • 使用ImportSelector接口
  • 使用ImportBeanDefinitionRegistrar接口

以下是一个直接导入组件类的示例:

这里,OrderService类被导入到Spring容器中,即使OrderService类上没有@Component注解。注入的bean的名称默认是类的全限定名。

如果你实现了ImportSelector接口,那么Spring将会在解析@Import注解时调用你实plement的selectImports方法。此方法返回一个包含类全名的数组,Spring会将这些类作为bean注入到容器中。

以下是一个ImportSelector示例:

在此示例中,只有指定在selectImports方法返回的数组中的类(UserService和PersonService)被注入到Spring容器中,而实现ImportSelector的OrderService类并没有被注入。

还可以通过实现ImportBeanDefinitionRegistrar接口来手动注册bean。需要重写registerBeanDefinitions方法,然后在其中自定义bean的注册过程。

以下是一个ImportBeanDefinitionRegistrar示例:

在这个例子中,UserService类被注册为了一个bean,而实现了ImportBeanDefinitionRegistrar接口的AService类并没有被注入。

然后是DeferredImportSelector,这是ImportSelector的子接口,这个接口的实现类的处理会被推迟到所有的@Configuration类都被处理完之后。比如说,想等待所有的配置都加载完成后,基于某些条件动态地注册一些bean,这时候就可以使用DeferredImportSelector。一个典型的例子就是Spring Boot的自动配置(auto-configuration)。

vue组件的注册

vue组件注册

1,组件名

推荐使用w3c规范中的自定义组件名(字母全小写,并且含有一个连字符-)

2,全局注册

使用vue.component进行注册,这里的注册指的是全局注册。

在vue中,使用组件的具体步骤为:

组件注册(vue.component ),新建vue实例(new Vue() ),就可以在具体的div中进行使用组件。

3,局部注册

局部注册需要使用JavaScript对象来定义组件:

然后在new vue实例中,在里面的components部分进行定义想要使用的组件:

如果想要B组件能够在A组件中使用,可以如下定义:

4,模块系统

可以通过import,require使用一个系统

5,在模块系统中进行局部注册

如果使用了webpack或者Babel模块系统,可以创建一个components目录,将每个组件放在其各自的文件中。

在局部注册时,提前将组件导入,在一个ComponentB.js或者ComponentB.vue组件中进行设置,如代码所示:

基础组件的自动化全局注册:

可以使用webpack(或使用webpack的vue cli3+)的require.context只注册这些通用的基础组件,比如在src/main.js中全局导入基础组件:

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。