- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在学习 spring aop,我不知道将上下文参数传递给建议。
请注意,我指的是 bối cảnh
参数,而不是 normal
参数。
传递普通参数很简单,例如:
a join point:
public void read(String something){
}
@Diện mạo
public class SessionAspect {
@Pointcut("execution(* *.*(String)) &&args(something)")
public void sess() {
}
@Before("sess()")
public void checkSessionExist(String something) {
//Here
}
}
Sau đó something
参数将被传递给通知 checkSessionExist
.
但是我想获取 HttpSession 之类的上下文参数怎么样?
a join point:
public void listUser(){
dao.list(User.class,.....);
}
@Diện mạo
public class SessionAspect {
@Pointcut("execution(* *.*(String))")
public void sess() {
}
@Before("sess()")
public void checkSessionExist(String something) {
//Here
}
}
在此示例中,listUser
连接点仅允许登录用户使用。
所以我想检查当前HttpSession中是否有一个名称,所以我需要在提示checkSessionExist
中获取一个HttpSession的实例。
但是如何获取呢?
最简单的方法是将 HttpSession
参数添加到所有的连接点,如下所示:
public void listUser(HttpSession session){
dao.list(User.class,.....);
}
然而,这违背了 AOP 本身。在我看来,连接点甚至不需要知道Aspect的存在,不是吗?
如何解决?
1 Câu trả lời
您可以在 @Diện mạo
本身中获取 HttpSession
引用,而不是通过 @Pointcuts
chuyển khoản HttpSession
RequestContextHolder.currentRequestAttributes()
.getAttribute("user", RequestAttributes.SCOPE_SESSION)
@Diện mạo
public class SessionAspect {
// fetch the current HttpSession attributes and use as required
private ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
@Pointcut("execution(* *.*(String))")
public void sess() {
}
@Before("sess()")
public void checkSessionExist(String something) {
//Here
}
}
关于aop - 如何在 spring aop 中将上下文参数传递给建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13983796/
Câu hỏi này đã có câu trả lời tại đây: Làm thế nào để khởi tạo var? (11 câu trả lời) Đã đóng 8 năm trước. Tôi muốn gán giá trị ban đầu là null cho một biến và gán giá trị trong khối if-else tiếp theo, nhưng mã
Tôi đang sử dụng TypeScript 3.8 để viết mã JS và TS hỗn hợp. Tôi đã viết dòng sau: export * as Easing from './easing'; Nó sẽ là một trò chơi công bằng trong Type
Tôi cần đổi dấu "/" trong mã R của mình thành "\". Tôi có thứ gì đó như thế này: tmp <- paste(getwd(),"tmp.xls",sep="/") Vì vậy, tmp của tôi là c:/Study/tmp.xls Tôi hy vọng
Tôi có một câu hỏi. Ví dụ tôi có thế này: id số lượng chân lý 1 1 1 2 1 2 3 0 0 4 1 1 5 1 2 6 1
Tôi đang cố gắng sử dụng "IN" và "=" để tìm một số hạt đậu. Hiện tại tôi đang sử dụng mã này: $ids = array(1,2,3,4); $user = 1; $things = R::find( 'thing'
Có thể triển khai trên điện thoại của người khác trong Xcode không? Tôi không có iPhone, nhưng tôi muốn thử nghiệm ứng dụng tôi đã tạo trên điện thoại của một người bạn. Trước khi trả 99 đô la, tôi muốn chắc chắn rằng việc này sẽ không gây rắc rối. Cảm ơn. Câu trả lời tốt nhất sẽ không phải là bất kỳ
Tôi đang cố gắng lấy một số rất lớn (lớn hơn unsigned long long int). Vì vậy, tôi lấy nó dưới dạng một chuỗi rồi chuyển đổi từng chữ số thành số nguyên và sử dụng chuỗi đó. #include #include int
Tôi có liên kết cho các thư viện C trong Rust, nhưng chúng chưa đầy đủ. Trong mã C, tôi định nghĩa một macro đơn giản như sau: #define MY_MACROS1(PTR) (((my_struct1
Tôi đang gặp khó khăn với vấn đề này. http://jsfiddle.net/yhcqfy44/ Hoạt ảnh sẽ tự động tương ứng với chiều cao của thanh cuộn mỗi khi nó xuất hiện khi cuộn lên trên cùng. Tôi đã viết điều này rồi nhưng không thành công: var hheight =
Tôi đang sử dụng một API JSON trả về số dưới dạng chuỗi. Ví dụ "12", tuy nhiên, giá trị trường này cũng có thể không phải là số, ví dụ: "-". Tôi đã phân tích dữ liệu JSON thành một bản đồ và tôi muốn trích xuất trường này dưới dạng số nguyên trong elixir
Tôi đang cố gắng viết một lớp để chuyển đổi các tệp .wav sang các tệp .aiff như một phần của dự án. Tôi đã tìm thấy một vài thư viện Alvas.Audio (http://alvas.net/alvas.audio,overview.aspx)
Tôi muốn lập chỉ mục "các từ ghép" như "New York" thành các thuật ngữ đơn trong Lucene, thay vì "new", "york". Theo cách này, nếu ai đó tìm kiếm "địa điểm mới", các tài liệu có chứa "new york" sẽ không khớp.
Tôi hy vọng lời giải thích này giúp tôi hiểu rõ hơn về lợi ích của việc sử dụng macro. Câu trả lời tốt nhất nằm trong hàm, trong đó tất cả các đối số đều được đánh giá trước khi được gọi. Điều này có nghĩa là hoặc như một hàm không thể lười biếng, và một macro có thể viết lại hoặc như một câu lệnh if chỉ đánh giá điểm nếu
Tôi có một số XML trông giống như thế này foo ]]> (lưu ý > đăng nhập "> foo") và một bảng định kiểu XSLT khi tôi chạy xsltproc stylesheet.xs
Khi tôi thử ép kiểu Any
Tôi đang phát triển một trình thu thập thông tin đơn giản bằng Python. Mục đích là tạo sitemap.xml. (Bạn có thể tìm thấy phiên bản alpha thực sự tại đây: http://code.google.com/p/sitemappy/
Tôi muốn biết liệu có thể ngắt câu lệnh If thành nhiều dòng trong VBScript hay không. Giống như: Nếu (UCase(Trim(objSheet.Cells(i, a).Value)) = "YES") Hoặc _ (UCas
for (String item : someList) { System.out.println(item); } Liệu điều này có tương đương với việc sử dụng "do while" không? Cảm ơn. Câu trả lời hay nhất Nếu danh sách trống, f
Câu hỏi này đã có câu trả lời: Đã đóng cách đây 10 năm. Có thể trùng lặp: Chia chuỗi bằng dấu phân cách trong C Cách tốt nhất để chia danh sách được phân tách bằng dấu "," thành một mảng trong C
Tôi có một mảng ký tự trông như thế này: [0, 10, 20, 30, 670] Làm thế nào tôi có thể chuyển đổi chuỗi này thành một mảng số nguyên? Đây là mảng int i=0; size_t dim = 1; char* array = (c
Tôi là một lập trình viên xuất sắc, rất giỏi!