介绍
这篇文章将为大家详细讲解有关@ComponentScan在春天中无效的原因分析以及解决方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
@ComponentScan在春天中无效
在我实现第一个spring AOP程序的时候,我按照主流的推荐,采用注解@ComponentScan @Aspect @Before来实现一个切面。
让我十分纳闷的是。我的程序始终无法正确调用到通知。而且我的通知和主流的毫无差别。代码如下:
通知类,其中定义了切面:
package com.bfytech.spring_8_bean3;, import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; , @Aspect @ component {public class  Advice ,@Before(“执行(*,com.bfytech.spring_8_bean3.Person.getName (. .)“) ,public void  logBeforeFunction (), { System.out.println才能(“function begin"); ,} ,@After(“执行(*,com.bfytech.spring_8_bean3.Person。* (. .))“) ,public void  logAfterFunction (), { System.out.println才能(“function 以何种); ,} }
业务类:
package com.bfytech.spring_8_bean3;, import org.springframework.stereotype.Component, @ component public class  Person { ,private String 名称; ,private int 年龄; ,public String  getName (), { System.out.println才能(“getName…“); return 才能,名字; ,} ,public void  setName (String 名称),{ this.name 才能=,名称; System.out.println才能(“setName…“); ,} ,public int  getAge (), { System.out.println才能(“getAge…“); return 才能;年龄; ,} ,public void  setAge (int 年龄),{ System.out.println才能(“setAge…“); 时间=this.age 才能;年龄; }大敌; }
豆配置类:
package com.bfytech.spring_8_bean3;, import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; @ configuration @EnableAspectJAutoProxy @ComponentScan {public class  BeanConfig ,@ bean ,public Advice 建议(),{ return 才能;new 建议(); ,} }
AppicationContext。xml
& lt; ? xml version=?.0“,编码=癠TF-8" ?比; http://www.springframework.org/schema/beans" & lt; beans  xmlns=?; ,,,xmlns: xsi=癶ttp://www.w3.org/2001/XMLSchema-instance" ,,,xmlns: p=癶ttp://www.springframework.org/schema/p" ,,,xmlns:上下文=癶ttp://www.springframework.org/schema/context" ,,,xmlns: util=癶ttp://www.springframework.org/schema/util" ,,,xsi: schemaLocation=? http://www.springframework.org/schema/beans , http://www.springframework.org/schema/beans/spring-beans-4.1.xsd ,,,,,,,http://www.springframework.org/schema/context , http://www.springframework.org/schema/context/spring-context-4.3.xsd ,,,,,,,http://www.springframework.org/schema/util , http://www.springframework.org/schema/util/spring-util-4.3.xsd",在 & lt;/beans>
最后的调用类应用
package com.bfytech.spring_8_bean3;, import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; ,/* * ,* Hello 世界! ,* ,*/public class  App { ,,,public static void 主要(String[]大敌;args ) ,,,{ ,,,,,,,System.out.println (,“Hello 世界!“,),,,,,,,,, ,,,,,,,ApplicationContext context =, new FileSystemXmlApplicationContext (“ApplicationContext.xml"); ,,,,,,,Person Person =,(人),context.getBean (Person.class); ,,,,,,,,,person.setName (“Tony"); ,,,,,,,,,person.setAge (88); ,,,,,,,,,System.out.println (person.getName ()); ,,,,,,,,,System.out.println (person.getAge ()); ,,,} }
郁闷之余,做了大量尝试,后来发现在ApplicationContext。null null null null null null null null null null null null null null null null null null null null null null