Tôi đang sử dụng Spring 3 AOP và tôi có một khía cạnh yêu cầu quyền truy cập vào HttpServletRequest. Nó trông giống như sau:Spring AOP và an toàn chủ đề khía cạnh cho một bean HTTPServletRequest tự động
@Aspect
public class MyAspect {
@Autowired
private HttpServletRequest httpServletRequest;
public void init() {
// Do something once...
}
@Before("my pointcut here...")
private void myMethod() {
// I need the httpServletRequest...
}
@After("my pointcut here...")
private void myOtherMethod() {
// I need the httpServletRequest...
}
}
Và được cấu hình như thế này:
<bean id="myAspect" class="com.some.package.MyAspect" init-method="init" />
Là phương pháp init chỉ gọi một lần mỗi IoC container, mặc dù đây là một khía cạnh, và là chủ đề an toàn HttpServletRequest ? Nếu nó không phải là, cách tốt nhất để có được nó trong quá trình thực hiện các lời khuyên và có nó được thread an toàn? Nếu có thể tôi không muốn sử dụng một chủ đề địa phương.
Tom, đây là một câu trả lời tuyệt vời. Liệu Spring có thể có tài liệu này ở đâu đó mà tôi có thể đọc được không? Rất khó để tìm thấy bất cứ điều gì liên quan đến cách proxy thực sự hoạt động.Oh, và tôi không cần truy cập vào yêu cầu từ bên trong init() - đó là tôi gian lận và ép hai câu hỏi thành một :) –
@BrianReindel: Tôi bao gồm tham chiếu đến tài liệu Spring trong câu trả lời của tôi. –
Hi Thomasz, mã sẽ hoạt động trong câu trả lời? Bạn cũng có thể đưa ra ý kiến của mình về "http://stackoverflow.com/questions/22923813/set-systems-property-in-controller-and-access-that-in-an-aspect" – riship89