I'm learning the bean AOP with Annotation and xml config but Spring does not create the beans.
Interface
package com.spring.studying.SpringAop.FrameworkService.AspectJAnnotation; public interface Artist { void perform(); } Guitar Class
package com.spring.studying.SpringAop.FrameworkService.AspectJAnnotation; import org.springframework.stereotype.Component; @Component("grammyGuitarist") public class GrammyGuitarist implements Artist{ @Override public void perform() { System.out.println("Start to play guitar"); } public void playGuitar(String brand) { System.out.println("Get Guitar "+brand); } public void rest() { System.out.println("zzZZ!!!!"); } } Documentarist
package com.spring.studying.SpringAop.FrameworkService.AspectJAnnotation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component(value="documentaries") public class Documentarist { private GrammyGuitarist guitarist; public void executed() { guitarist.playGuitar("LakeWood"); guitarist.perform(); guitarist.rest(); } @Autowired public void setGuitarist(GrammyGuitarist guitarist) { this.guitarist = guitarist; } } Advice Class
package com.spring.studying.SpringAop.FrameworkService.AspectJAnnotation; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; @Component("annotatedAdvice") @Aspect public class AnnotatedAdvice { @Pointcut("execution(* rest*(..)) && args(brand)") public void restExecution(String brand) { } @Pointcut("bean(grammyGuitarist)") public void isGrammyGuitarist() { } @Before("restExecution(brand) && isGrammyGuitarist") public void simpleBeforeAdvice(JoinPoint joinPoint , String brand) { System.out.println("Before Advice processing"); System.out.println("Playing guitar :" + brand); System.out.println("Executing :"+ joinPoint.getSignature().getDeclaringTypeName() +" "+joinPoint.getSignature().getName()); } } Demo Class
package com.spring.studying.SpringAop.FrameworkService.AspectJAnnotation; import org.springframework.context.support.GenericXmlApplicationContext; import java.util.Arrays; public class AspectJAnnotationDemo { public static void main(String[] args) { GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.load("aop-aspectj-annotation-style.xml"); ctx.refresh(); Arrays.stream(ctx.getBeanDefinitionNames()).forEach(System.out::println); Documentarist documentarist = ctx.getBean("documentaries",Documentarist.class); documentarist.executed(); } } My Xml Config File
<?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:context="http://www.springframework.org/schema/context" 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/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <context:annotation-config/> <context:component-scan base-package="com.spring.studying.SpringAop"/> <aop:aspectj-autoproxy/> </beans> None of my beans were created just 6 default beans from spring.
I have try to create bean with tag and it worked fine . Just don't know why my code did not work with the annotation.