sách gpt4 ai đã đi

Giải quyết vấn đề tiêm dịch vụ null trong các lớp thông thường trong SpringMvc

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

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

Bài đăng trên blog CFSDN này giải quyết vấn đề tiêm dịch vụ null trong các lớp thông thường trong SpringMvc. Bài đăng được tác giả thu thập và sắp xếp. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Dịch vụ được đưa vào lớp bình thường trong SpringMvc là null

Kịch bản:

Khi sử dụng bộ đếm thời gian Quartz, các lớp Java thông thường cần được đưa vào lớp dịch vụ Spring và lỗi sẽ được báo cáo trong quá trình gọi.

Giải pháp:

?
1
2
3
4
5
6
/**
  * Thường xuyên nhận dịch vụ khóa học
  */
@Autowired
được bảo vệ QuartzGetCourseService quartzGetCourseService = (QuartzGetCourseService) SpringContextUtil
         .getBean( "thạch anhGetCourseService" );
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hai mươi mốt
hai mươi hai
hai mươi ba
hai mươi bốn
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
nhập khẩu org.springframework.beans.BeansException;
nhập khẩu org.springframework.beans.factory.NoSuchBeanDefinitionException;
nhập khẩu org.springframework.context.ApplicationContext;
nhập khẩu org.springframework.context.ApplicationContextAware;
nhập khẩu org.springframework.stereotype.Thành phần;
 
/**
  * Trong chú thích Spring, các lớp thông thường lấy các phương thức hoặc đối tượng bean được đánh dấu bằng @Service
  *
  */
@Thành phần
công cộng lớp học Tiện ích SpringContext thực hiện Nhận thức ngữ cảnh ứng dụng {
     riêng tư tĩnh ApplicationContext applicationContext = vô giá trị ;
 
     @Ghi đè
     công cộng vô hiệu thiết lập ApplicationContext(ApplicationContext applicationContext) ném Ngoại lệ đậu {
         SpringContextUtil.applicationContext = applicationContext;
     }
 
     công cộng tĩnh ApplicationContext lấyApplicationContext() {
         trở lại ứng dụngBối cảnh;
     }
 
     /**
      * Lưu ý rằng tên bean mặc định là tên lớp (với chữ cái đầu tiên viết thường). Ví dụ: A8sClusterDao = getBean("a8sClusterDao")
      *
      * @tên tham số
      * @trở lại
      * @throws Ngoại lệ Beans
      */
     công cộng tĩnh Đối tượng getBean(String name) ném Ngoại lệ đậu {
         trở lại applicationContext.getBean(tên);
     }
 
     /**
      * Lấy bean theo tên lớp
      *
      * @param
      * @param lớp
      * @trở lại
      * @throws Ngoại lệ Beans
      */
     @SuppressCảnh báo ( "chưa được kiểm tra" )
     công cộng tĩnh T getBeanByName(Lớp lớp) ném Ngoại lệ đậu {
         thử {
             char [] cs = clazz.getSimpleName().toCharArray();
             cs[ 0 ] += 32 ; // Chuyển đổi chữ cái đầu tiên từ chữ hoa sang chữ thường
             trở lại (T) applicationContext.getBean(String.valueOf(cs));
         }
         nắm lấy (Ngoại lệ e) {
             e.printStackTrace();
             trở lại vô giá trị ;
         }
     }
 
     công cộng tĩnh Boolean containsBean(Tên chuỗi) {
         trở lại applicationContext.containsBean(tên);
     }
 
     công cộng tĩnh Boolean isSingleton(Tên chuỗi) ném Không có ngoại lệ nào được định nghĩa {
         trở lại applicationContext.isSingleton(tên);
     }
}

Cuộc gọi hoàn tất và bài kiểm tra có thể nhận được Dịch vụ.

Lớp công cụ Spring sử dụng dịch vụ tiêm

Nhìn chung, bạn cần sử dụng chú thích @Autowired để đưa dịch vụ vào lớp công cụ. Tuy nhiên, vì các phương thức lớp công cụ thường được viết dưới dạng tĩnh nên việc tiêm trực tiếp gặp phải vấn đề.

hạt dẻ

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hai mươi mốt
hai mươi hai
hai mươi ba
hai mươi bốn
25
26
@Thành phần
công cộng lớp học Bộ điều khiển tin nhắn {   
     riêng tư tĩnh Trình ghi nhật ký = LoggerFactory.getLogger(SmsController. lớp học );   
     @Autowired
     riêng tư Dịch vụ thông tin tin nhắn; 
     riêng tư tĩnh Bộ điều khiển sms;    
      
     @PostXây dựng
     công cộng vô hiệu khởi tạo() { 
         Bộ điều khiển sms = cái này
         smsController.messagesInfoService = cái này .messageInfoService;   
    
  
     /**
      *Giao diện truy vấn lịch sử tin nhắn SMS (truy vấn tin nhắn SMS đã gửi trong khoảng thời gian nhất định)
      */
     @Yêu cầu lập bản đồ (giá trị = "/queryMessage" ,phương thức = RequestMethod.GET)
     công cộng ModelAndView truy vấnMessage{
         pager = messagesInfoService.findPager(bản đồ, 5 ,pChỉ số);
         ModelAndView modelAndView = mới Mô hình và chế độ xem( "quản lý/jgdxgl/jgdx_qm" );
         Danh sách danh sách = pager.getItem();
         modelAndView.addObject( "máy nhắn tin" máy nhắn tin);
         modelAndView.addObject( "danh sách" ,danh sách);
         trở lại mô hìnhAndView
     }     
}

Trên đây là kinh nghiệm cá nhân của tôi, hy vọng có thể giúp bạn tham khảo và mong bạn có thể ủng hộ tôi.

Liên kết gốc: https://blog.csdn.net/u011429743/article/details/81111151.

Cuối cùng, bài viết này về giải quyết vấn đề null Service injection trong các lớp thông thường trong SpringMvc kết thúc tại đây. Nếu bạn muốn biết thêm về cách giải quyết vấn đề null Service injection trong các lớp thông thường trong SpringMvc, vui lòng tìm kiếm các bài viết trên CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

29 4 0
qq735679552
Hồ sơ cá nhân

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á Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com