Tôi đang gặp khó khăn khi AspectJ thực hiện thời gian tải dệt trên một lớp được chú thích bằng @configurable trong dự án chính của tôi. Không có trường nào được đặt và không có trình chỉnh sửa nào được chạm vào.Thời gian tải lò xo không phát hiện được chú thích với @configurable
Tôi không nghĩ rằng có vấn đề với chính cấu hình, vì tôi đã trích xuất cấu hình và thử nghiệm nó trên một dự án sandbox nhỏ hơn. Chỉ vì lợi ích của nó, tôi sẽ bao gồm nó trong câu hỏi này mặc dù.
Vì vậy, tôi đang tự hỏi:
- Có điều gì trong dự án lớn hơn mà có thể gây trở ngại cho mùa xuân/AspectJ từ việc phát hiện các lớp học đặc biệt này?
- Có cách nào để kiểm tra xem mùa xuân có còn nhận thức được lớp học trong câu hỏi không?
Và cuối cùng, bất kể mã tôi có thể trích xuất (xin tha obfuscation):
Từ cấu hình XML:
<context:annotation-config />
<context:spring-configured />
<context:component-scan base-package="se.isydev" />
<context:component-scan base-package="se.istools" />
<aop:aspectj-autoproxy />
<context:load-time-weaver aspectj-weaving="on" />
<context:property-placeholder location="classpath:settings.properties" />
(...)
<bean class="com.company.ClassToBeWeaved"
scope="prototype">
<property name="injectedBean" ref="injectedBean" />
</bean>
Và chính lớp:
@Configurable
public class ClassToBeWeaved {
private InjectedBean injectedBean;
@Required
public void setInjectedBean() { ... }
}
Sửa :
Vâng, hóa ra là nó không hoạt động do phụ thuộc vòng tròn. Ôi trời ơi, tôi thích làm việc trên mã di sản. Tuy nhiên, câu hỏi ban đầu của tôi vẫn còn.
môi trường gì bạn đang chạy một này? LTW chỉ hoạt động trên một số máy chủ ứng dụng nhất định. – skaffman
Tôi chạy hộp cát của tôi ngay trong nhật thực và ứng dụng thích hợp đang trong WAR đang chạy trên JBoss – mikek
Phiên bản JBoss nào bạn đang chạy và dòng lệnh khởi động java cho nó là gì? Nếu JBoss là 5.x hoặc cao hơn, bạn không cần một tác nhân cụ thể (và đó là sự khác biệt với sandbox của bạn, nơi bạn phải chỉ định tác nhân). –