저는 스프링 AOP 측면 집합을 사용하고 있습니다 (주로 내 라이브러리 here). 나는 aspect에 명시된 순서가 더 이상 존중되지 않는다는 것을 발견했다. (1 년 전에 Boot 1.3.x에서 1 년 전, 그것이 존경 받았다고 확신한다.) aspect의 범위 bean은 "프로토 타입"입니다. Java에서 'scope = "prototype"또는 JavaConfig에서 @Scope ("prototype")을 제거하면 순서가 정확하지만 범위가 프로토 타입 일 때 순서가 작동하지 않습니다 - 외관이 임의 순서로 시작됩니다 . aspect는 Ordered 인터페이스를 구현한다. 그들 (예를 들어, RetryInterceptor)의 일부 (인, 실패한 작업의 수를 유지하는 상태이기 때문에봄 AOP 프로토 타입 범위 측면에서 순서가 맞지 않습니다.
@Bean
@Scope("prototype")
public CircuitBreakerAspect circuitBreakerAspect()
{
CircuitBreakerAspect aspect = new CircuitBreakerAspect();
aspect.setGraphiteClient(graphiteClient);
aspect.setOrder(100);
return aspect;
}
내가, 프로토 타입 범위로 측면이 필요합니다
콩의 정의는 패턴 (JavaConfig를) 따라 JMX로 내보내기). 프로토 타입 범위를 제거하면 순서가 올바르게 작동하지만 권장되는 모든 빈 인스턴스에 대해 동일한 싱글 톤 aspect 인스턴스가 사용됩니다! 나는 봄 부팅 1.4.1 및 Java 8
가 어떻게 프로토 타입 측면이 제대로 주문을 얻을 수 오전
?
Juergen은 이것이 의도적이라고 말합니다. 봄 5에서 그들은 다시 방문 할 수있을 것입니다. –