Spring 2.5에 추가되는 bean() joinpoint
참조 : http://blog.interface21.com/main/2007/09/24/the-new-bean-pointcut/
Classic Spring AOP를 사용할 때 여러 Target에 대해 각각의 proxyFactoryBean을 정의하는 것은 매우 귀찮은 일이고 XML도 방대해 지기 때문에 AutoProxyCreator를 사용했었습니다.
그 중에서도 BeanNameAutoProxyCreator는 XML에 등록되어 있는 bean 이름을 설정해 주면 해당 bean의 Proxy를 만들어 주는 편리한 API였지만, 단점은 aop 네임스페이스 기반 이나 @AspectJ 애노테이션 기반과 같이 사용할 수 없다는 것이였습니다.
Spring 2.5에서는 bean() 이라는 joinpoint 표현식을 제공하여 다음과 같이 다수의 target bean을 편리하게 지칭할 수 있게 됩니다.
Pointcut | Join points selected in |
---|---|
bean(accountRepository) | The bean named "accountRepository" |
!bean(accountRepository) | Any bean except the "accountRepository" bean |
bean(*) | Any bean |
bean(account*) | Any bean with name starting in "account" |
bean(*Repository) | Any bean with name ending in "Repository" |
bean(accounting/showaccount) | The bean named accounting/showaccount (designating, say, a controller handling that URL) |
bean(accounting/*) | Any bean whose name starts with "accounting/" (designating, say, any controller handling accounting-related URLs) |
bean(accounting/*/edit) | Any bean whose name starts with "accounting/" and ends with "/edit" (designating, say, any controller handling the edit operation functionality related to accounting) |
bean(*dataSource) || bean(*DataSource) | Any bean whose name ends with either "dataSource" or "DataSource" |
bean(service:name=monitoring) | The bean named "service:name=monitoring" |