@ComponentScan在春天中无效的原因分析以及解决方法

  介绍

这篇文章将为大家详细讲解有关@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

@ComponentScan在春天中无效的原因分析以及解决方法