例如, 一个Job需要使用dao/service等ioc里面的对象,应怎么办呢?
-----------------上期没人回答问题的分割线-------------------------------------
上一期没人给出一个答案,拖了好多天依然没人回答,好桑心...
以下讨论不涉及自定义ClassLoader, javaagent,inst包的话题.
第一个问题, 一个类加上@IocBean注解,发生了什么事:
什么都没有发生, 仅仅是添加了一个可供读取的class文件内的几个属性.
无论UserServiceImpl标注了任何注解,下面的代码的运行没有任何区别
UserService us = new UserServiceImpl();
us.insert(user);
注解对这段代码的运行没有任何影响. 啊啊啊? 那你会问:
那Ioc做了啥??
先看代码:
UserService us = ioc.get(UserService.class);
us.insert(user);
跟直接new的区别是什么? 是ioc.get方法可以写一堆逻辑,而new只是一个字节码的操作符.
换句话说: ioc.get比new多很多代码, 里面可以创建对象,创建引用,设置属性,触发事件
注解并非什么魔法,它只是class文件里面的一个attr, 除非有程序去读取它,并按某个规则进行操作, 它才有意义.