1
misaka19000 2017-07-14 21:47:56 +08:00
通过扫描获取加了注解的类,然后用反射创建这个类的对象
|
2
FreeFd 2017-07-14 22:18:02 +08:00 via Android
spring 通过你配置的扫描路径,扫描该包下面所有的类,然后找到带有 service comment 等等注解的类,然后用反射创建这些类,保存到容器里,最后你就可以注入使用啦
|
3
chenguoyu OP @misaka19000
@FreeFd 有没有更加具体一点的呢?比如配置文件的方式,我知道可以用 dom4j 读取配置文件的属性,子节点等等,然后反射创建类,这是我可以直接通过代码实现的。而注解虽然知道是扫描,却不知道怎么具体实现 |
4
caixiexin 2017-07-15 10:19:55 +08:00 via Android
不是扫描注解得到类信息,而是扫描指定路径下的类,通过反射得到类的注解信息,根据注解信息判断这个类是否需要 spring 容器管理,如何实例化对象等。
|
5
misaka19000 2017-07-15 14:32:37 +08:00 via Android
@chenguoyu 是通过文件 IO 操作来搞得,Java 不是可以通过文件路径来进行反射操作吗。先获取所有的类文件,然后执行反射。配置文件放在约定好的地方,在需要用到的时候去读取就行了
|
6
Miy4mori 2017-07-15 20:50:59 +08:00 via iPhone
你需要了解注解的工作原理,注解其实就是一种特殊的注释,只有通过反射才能发挥它的作用,你所说的通过反射而不是通过注解获得是什么意思?没有反射注解一点用都没有。你得先弄明白这一点。
|
7
Miy4mori 2017-07-15 20:55:59 +08:00 via iPhone
为什么可以通过注解配置而不需要额外配置文件?就是因为你在反射到这个类方法字段的时候可以获得其上注解的信息,而你的配置就写在注解上的,所以直接把获取的信息直接解析使用就行了,就不需要读 XML 之类的配置文件了。
|
8
lowzoom 2017-07-17 18:46:24 +08:00
java.lang.ClassLoader#getResources
|
9
woshixiaohao1982 2017-07-23 15:29:20 +08:00
@Miy4mori springboot 好像有自己一套加载机制
|
10
Miy4mori 2017-07-23 18:24:24 +08:00 via iPhone
@woshixiaohao1982 什么机制都离不开反射,spring 也是用反射实现的。
|