04、组件注册-@Import-使用
在Spring框架中,有几种主要的方式来向Spring IoC容器注册bean:
- 使用包扫描+注解(@ComponentScan 和 @Component):Spring会扫描指定的包及其子包,对于带有@Component、@Service、@Repository或@Controller等注解的类,Spring会自动注册它们的bean实例。
- 使用@Bean注解:这是在配置类中注册bean的一种方式。这对于第三方库的类非常有用,因为我们不能在这些类上添加@Component注解。通过在配置类中定义一个返回对象的方法,并使用@Bean注解,我们可以将这个方法的返回对象注册到Spring IoC容器中。
- 使用@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
文章为作者独立观点不代本网立场,未经允许不得转载。