这里的属性注入注解是如何被识别的?
在SpringDemo2.java中有个使用注解的属性注入(
@Resource(name="customerDao")
private CustomerDao customerDao;
),
而在spring.xml中并没有扫描配置,那这个注解是如何被识别的?
spring.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--xml配置方式-->
<!--配置目标类-->
<bean id="customerDao" class="com.imooc.aspectJ.demo2.CustomerDaoImpl"/>
<!--配置切面类-->
<bean id="myAspectXml" class="com.imooc.aspectJ.demo2.MyAspectXml"/>
<!--aop相关配置-->
<aop:config>
<!--配置切入点-->
<aop:pointcut id="pointcut1" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.save(..))"/>
<aop:pointcut id="pointcut2" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.update(..))"/>
<aop:pointcut id="pointcut3" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.delete(..))"/>
<aop:pointcut id="pointcut4" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.findOne(..))"/>
<aop:pointcut id="pointcut5" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.findAll(..))"/>
<!--配置aop的切面-->
<aop:aspect ref="myAspectXml">
<!--配置前置通知-->
<aop:before method="before" pointcut-ref="pointcut1"/>
<!--配置后置通知-->
<aop:after-returning method="afterReturning" pointcut-ref="pointcut2" returning="result"/>
<!--配置环绕通知-->
<aop:around method="around" pointcut-ref="pointcut3" />
<!--异常抛出通知-->
<aop:after-throwing method="afterThrowing" pointcut-ref="pointcut4" throwing="e"/>
<!--最终通知-->
<aop:after method="after" pointcut-ref="pointcut5"/>
</aop:aspect>
</aop:config>
</beans>
正在回答
同学你好,同学的说法是正确的,<context:annotation-config/>对已注册过的Bean的进行操作的配置,注入到某个类的内部也是通过@Resource这个注解。
但是如果是结合单元测试@Resource这个注解可以直接使用,不写<context:annotation-config/>也是可以的,但是建议在其他地方还是写上。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,1、<context:annotation-config/>的作用:
它是对已注册过的Bean的进行操作的配置,也就是说,Bean已经通过某种方式(比如Xml配置)被注册,然后使用这个配置。比如注入到某个类的内部。
2、<context:component-scan />的作用:
<context:component-scan />和<context:annotation-config/>一样的作用,另外 它还可以扫描指定包下的类,将拥有注解的类注册到Spring中
在本小节的案例中,@Resource注解是属于J2EE的注解,按照名称进行装配,可以直接通过name属性进行指定名字。在测试的SpringDemo2中,已经使用xml配置注册了customerDao类,在测试类的单元测试里就可以直接使用了。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,这里和课程讲的并没有冲突。这里可以这样理解一下:
在 Spring的XML和注解整合开发中:
<context:annotation-config/>配置,会扫描到ProService这个类,将类和@Resource标注的属性交给Spring管理,这样这个ProService类就被注入到Spring中了。
而在本节案例中,是将spring中的customerDao这个bean注入到类中,这个bean已经在Spring中,不需要再扫描,就可以直接注入了。
如果是需要交给Spring管理的bean,需要加 <context:annotation-config/>这样的配置扫描,如果是Spring向类中注入属性,则不需要加。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 205 份
- 解答问题 4317 个
Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星