sách gpt4 ăn đã đi

Thảo luận chi tiết về mối quan hệ giữa @Autowired và static

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 26 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này bàn về mối quan hệ giữa @Autowired và static một cách chi tiết, được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm tới bài viết này thì nhớ like nhé.

Mối quan hệ giữa @Autowired và tĩnh

1. Cảnh xảy ra

Nhiều lần, một đồng nghiệp đã sử dụng static trong @Autowired của Spring, khiến đối tượng được chèn luôn báo cáo con trỏ null. Anh ấy không tìm thấy lỗi và đến hỏi tôi. Thực tế là trước đây tôi không biết về vấn đề này, nhưng tôi. dựa trên Đặc điểm của Spring container xác định rằng đối tượng anh ta gọi và đối tượng được chèn không phải là cùng một đối tượng, vì vậy chúng tôi nói với anh ta: thứ tự tải tĩnh là trước @Autowired; sau khi kiểm tra thông tin, tôi phát hiện ra rằng điều này; không phải vậy. . .

2. Phân tích nguyên tắc  

Các biến tĩnh và biến lớp không phải là thuộc tính của đối tượng mà là thuộc tính của một lớp, vì vậy các phương thức tĩnh thuộc về lớp và các phương thức thông thường thuộc về đối tượng thực thể (nghĩa là đối tượng từ New Spring tiêm nằm trong vùng chứa). Đối tượng được khởi tạo trong , vì vậy không thể sử dụng các phương thức tĩnh.

Việc sử dụng các biến tĩnh và biến lớp mở rộng phạm vi sử dụng các phương thức tĩnh. Các phương thức tĩnh không được khuyến nghị trong Spring. Mục đích chính của việc chèn phụ thuộc là cho phép vùng chứa tạo một phiên bản của một đối tượng và sau đó sử dụng chúng trong suốt vòng đời. Nó cũng giúp việc kiểm tra dễ dàng hơn.

Khi sử dụng các phương thức tĩnh, bạn không còn cần phải tạo các phiên bản của lớp, điều này khiến việc kiểm tra trở nên khó khăn hơn và bạn không thể dựa vào việc chèn để tạo nhiều phiên bản với các phần phụ thuộc khác nhau cho một lớp nhất định. Ví dụ: trường tĩnh này được ngầm chia sẻ. và là một trạng thái toàn cầu, Spring không khuyến nghị điều này.

3. Giải pháp

1. Thêm @Autowire vào hàm tạo

?
1
2
3
4
5
6
7
8
9
10
11
@Thành phần
công cộng lớp học Bài kiểm tra {   
     riêng tư tĩnh Dịch vụ người dùng Dịch vụ người dùng;   
     @Autowired
     công cộng Kiểm tra(UserService userService) {
         Test.userService = userService;
     }   
     công cộng tĩnh vô hiệu Bài kiểm tra() {
         userService.test();
     }
}

2. Chú thích bằng @PostConstruct

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@Thành phần
công cộng lớp học Bài kiểm tra {   
     riêng tư tĩnh Dịch vụ người dùng Dịch vụ người dùng;   
     @Autowired
     riêng tư Dịch vụ người dùng userService2;   
     @PostXây dựng
     công cộng vô hiệu trước khi khởi tạo() {
         dịch vụ người dùng = dịch vụ người dùng2;
     }   
     công cộng tĩnh vô hiệu Bài kiểm tra() {
         userService.test();
     }
}

phương pháp tĩnh sử dụng @Autowired

Việc chèn lệnh không thành công, việc chèn hàm tạo đã thành công

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Thành phần
@Slf4j
công cộng lớp học Thông tin Cookie của người dùng
     riêng tư tĩnh RedisTemplate redisTemplate;
     riêng tư tĩnh JWTUtils jwtUtils;
     @Autowired
     công cộng UserCookieInfoUtil(JWTUtils jwtUtils, RedisTemplate redisTemplate) {
         UserCookieInfoUtil.jwtUtils = jwtUtils;
         UserCookieInfoUtil.redisTemplate = redisTemplate;
     }
     công cộng tĩnh Bản đồ getCookieInfo(Chuỗi token) {
         Bản đồ bản đồ = mới Bản đồ băm <>();
         thử {
             Chuỗi loginName = jwtUtils.getLoginName(mã thông báo);
             Thông tin chuỗi = redisTemplate.opsForValue().get(Constants.TOKEN_USER_INFO + ":" + tên đăng nhập);
             bản đồ = JSONObject.parseObject(thông tin == vô giá trị ? "" : thông tin, Bản đồ. lớp học );
         } nắm lấy (Ngoại lệ e){
             log.lỗi( "Không lấy được thông tin đăng nhập từ bộ đệm: {}" , đ);
         }
         trở lại bản đồ;
     }
}

Trên đây là kinh nghiệm cá nhân của mình, hi vọng có thể cho các bạn tham khảo và mong các bạn có thể ủng hộ mình.

Liên kết gốc: https://www.cnblogs.com/pangyangqi/p/10010866.html.

Cuối cùng, bài viết thảo luận chi tiết về mối quan hệ giữa @Autowired và static kết thúc tại đây. Nếu bạn muốn biết thêm về cuộc thảo luận chi tiết về mối quan hệ giữa @Autowired và static, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. Tôi hy vọng tất cả các bạn ủng hộ blog của tôi trong tương lai! .

26 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress