java 中 @Resource 的实现机制
我想问一下@Resource这个注解的实现机制我不知道它是怎么找到目标bean的貌似使用这个东西不需要在bean上添@Repository注解。网上说它是根据名称识别的是...
我想问一下 @Resource 这个注解的实现机制
我不知道它是怎么找到目标 bean 的 貌似使用这个东西 不需要在 bean 上添 @Repository 注解。
网上说它是根据名称识别的 是在 import 导入的包中所有类名首字母小写的集合中识别吗? 展开
我不知道它是怎么找到目标 bean 的 貌似使用这个东西 不需要在 bean 上添 @Repository 注解。
网上说它是根据名称识别的 是在 import 导入的包中所有类名首字母小写的集合中识别吗? 展开
2个回答
展开全部
首先如果想用注解或者是配置 来进行java bean 的注入,这些bean所对应的java类都要被Spring容器管理,所有的bean都存在于同一个生态体系里面才可以相互的引用注入。
其实不管是注解还是配置,本质的逻辑是一样的。都是寻找当前容器中对应的bean,找不到的话 注入进来的就是null。
基于你的问题,我们就说说Spring是怎么利用注解方式来注入bean的,首先在spring的文件里面会有一个scanner去扫描你所配置的package所有的类,利用反射来获取当前类是否已经加了注解(例如@Resource,当然如果没有加注解,这个类也可以通过配置的方式被管理),如果加了,那么容器就会对这个类进行标记以及生成一个对象存放起来(这个地方牵扯到ThreadLocal的知识),此时这个类就被管理了,当其他被管理的类需要引入这个类的时候,spring会找到被引入的类,类似于深clone一个 给当前线程。
其实不管是注解还是配置,本质的逻辑是一样的。都是寻找当前容器中对应的bean,找不到的话 注入进来的就是null。
基于你的问题,我们就说说Spring是怎么利用注解方式来注入bean的,首先在spring的文件里面会有一个scanner去扫描你所配置的package所有的类,利用反射来获取当前类是否已经加了注解(例如@Resource,当然如果没有加注解,这个类也可以通过配置的方式被管理),如果加了,那么容器就会对这个类进行标记以及生成一个对象存放起来(这个地方牵扯到ThreadLocal的知识),此时这个类就被管理了,当其他被管理的类需要引入这个类的时候,spring会找到被引入的类,类似于深clone一个 给当前线程。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询