00:00
好,接下来呢,我们来看import的第二种用法,等于说呢,我们之前是直接在import里边,我们传了我们要导的这个组件,那我们这个组件就快速的导入容器中了,但是呢,我们还可以用这个叫import select。那import select是什么呢?哎,我们说这叫啊导入的这个选择器,那么这个select呢,它是一个接口,这个接口呢,规定有一个方法叫select imports,这个方法呢,返回一个string数组,而这个数组呢,就是我们将要导入的这些类的权利名,你看他说我们返回这些,我们将导的这些类的类名就行了,这类呢就会被哎导入到我们这个容器中,那么呢,我们就来用一下它,哎说它是返回需要导入的组件的权利名,权利名的数组,这样的话呢,我们就会哎批量导入这些,那我们来写一个select,我们把这个呢写进这,比如我叫my port。
01:13
好,我们来实现这个接口。嗯,Port接口好,添加上未实现的方法,然后呢,这就是我们自定义。啊,自定义逻辑,哎,返回需要导入的组件,好,那么呢,这个我们letter写好了,我在这一块写的时候呢,来我们在这导的时候呢,我再来导一个,来写一个这个MY.class那么至于要导哪些组件,我们就在这个select里边,哎,我们来编写逻辑那这一块,哎返回那先不返回,那来说这个返回值就是要导入到容器中的组件类全类名,那么呢,接下来还有这个,还有一个方法叫呃,Select import里边有一个参数a notation me data啊它呢就是哎,当前标注咱们这个import注解的。
02:35
类的所有注解信息,就说呢,不只能获取到import注解里边呢,比如注解名,注解里边的每一个值,还能获取到其他注解,哎,我们当前类除过标了import,还有其他注解都能获取到,那么呢,我们在我们这里边呢,哎,我先打一个断点来看一下这些东西,好,我们来在测试类里边。
03:00
好在测试力,我们来log一下。好,我们来看看到这个断点呢,哎,我们拿到的这个注解源信息,诶,你看它能把当前类标的三个注解全拿到,第一个PROXY5,哎,这就是conal注解,哎,他传了window condition包括呢第二个注解configu,哎,它的VALUE6,包括呢第三个注解我们导了import,哎,它里边写了color read,以及咱们这个import,所以说呢,这些注解信息我们都能拿到,好放行诶但是大家看这个放行的时候呢,会报一个错,这个错呢,是咱们这个空指针异常,那空指针异常的原因呢,我们可以再来给大看一下,好,如果我们这儿返回一个捺,我们走下一步。哎,我们会返回这个词成数组,只不过呢,我们现在返回的是一个捺,如果是一个捺的话呢,它会调这么一个方法,我们来进去看这个方法呢,把我们这个数组,哎,你看它要拿到是不是这个数组的弄死啊,我们返回是捺的话,那这把捺点弄死,这就控制成异常了,所以说呢,我们不应该给它返回呢,哎,大家注意啊,我说呢,这个方法不要返回呢,值我们可以返回一个空数组,但是呢不能返回一个捺,就是说呢,可以返回这么一个空数组,但是呢,一定不能是钠,那么我们现在呢,我就在这做一个判断,好,这到底要把什么加在容器中呢?哎,比如我们再来多写两个颜色,一个叫blue。
04:40
那么呢,还有一个叫别漏,好现在呢,我们把这两我们也想加进来,我们用这个select的方式,好,我们通过它点get,你看我们能获取到所有注解的属性,以及所有跟类有关的信息都能获取到,那么呢啊,我们放在这,大家在下边可以试着调一下他们的方法,那我就直接在这写全里面,现在呢,我给它返回一个录。
05:13
的全类名,包括呢,我们再来写一个,我给他返回一个yellow的全类名。好,现在呢,我们来进行测试。来到我们的测试类,看现在容器中还有哪些。走,你看诶,除过我们以前的man con color red,还有person,比尔盖茨,还有两个blue yellow,这个blue yellow呢,不是我们直接导的,我们是通过来到这儿,哎,我们通过导入了一个my import,哎,把这些全类名返回这样啊,容器中就也自动的注册了这些组件,那我们就能从容器中获取到这个组件。
06:02
我们可以来测试,拿一下blue和yellow application get。B,好,我们按照类型,我们就拿一个blue。点拿一个blue对象输出。好,我们来测试一下。看容器中。这个对象打印,诶没问题,所以说呢,容器中就有这个对象,而我们用的是select的方式,这一块看好啊,前面是直接是类,那么把这个组件导入这一块呢,虽然看起来是一个普通类,但是呢,它由于实现了select接口,所以说把这个方法的返回的全类名这些组件会导入进来,而不是把这个select类导入到LC容器中,这是我们import的第二种用法。
我来说两句