Tiêm phụ thuộc với phương pháp nhà máy vào Spring

Spring framework cung cấp cơ sở để tiêm đậu bằng phương pháp nhà máy. Để làm như vậy, chúng ta có thể sử dụng hai thuộc tính của phần tử bean.

Spring-java
Dependency Injection with Factory Method in Spring
  1. Phương thức nhà máy: đại diện cho phương pháp nhà máy sẽ được gọi để tiêm đậu.
  2. Factory-bean: đại diện cho tham chiếu của bean mà phương thức nhà máy sẽ được gọi. Nó được sử dụng nếu phương thức nhà máy là không tĩnh.

Một phương thức trả về thể hiện của một lớp được gọi là phương thức Factory .

  1. công lớp  A {   
  2. công tĩnh  A getA () { // phương thức nhà máy   
  3.     trở lại mới  A ();   
  4. }  
  5. }  

Các loại phương pháp nhà máy

Có thể có ba loại phương pháp nhà máy:

1) Một phương thức nhà máy tĩnh trả về thể hiện của lớp của chính nó . Nó được sử dụng trong mẫu thiết kế singleton.

  1. <bean id = “a” class = “com.javatpoint.A”  Factory-method = “getA” > </ bean>   

2) Một phương thức nhà máy tĩnh trả về thể hiện của một lớp khác . Nó được sử dụng không được biết và quyết định trong thời gian chạy.

  1. <bean id = “b” class = “com.javatpoint.A”  Factory-method = “getB” > </ bean>   

3) Một phương thức nhà máy không tĩnh trả về thể hiện của một lớp khác . Nó được sử dụng không được biết và quyết định trong thời gian chạy.

  1. <bean id = “a” class = “com.javatpoint.A” > </ bean>   
  2. <bean id = “b” class = “com.javatpoint.A”  Factory-method = “getB”  Factory-bean = “a” > </ bean>   

Loại 1

Chúng ta hãy xem mã đơn giản để thêm phụ thuộc bằng phương pháp tĩnh nhà máy.

  1. <bean id = “a” class = “com.javatpoint.A”  Factory-method = “getA” > </ bean>   

Chúng ta hãy xem ví dụ đầy đủ để tiêm phụ thuộc bằng phương pháp nhà máy vào mùa xuân. Để tạo ví dụ này, chúng tôi đã tạo 3 tệp.

  1. A.java
  2. applicationContext.xml
  3. Test.java

A.java

Lớp này là một lớp đơn.

  1. gói  com.javatpoint;  
  2. công lớp  A {   
  3. riêng tĩnh cuối cùng  A obj = new  A ();    
  4. private  A () {System.out.println ( “nhà xây dựng riêng” );}  
  5. công tĩnh  A getA () {   
  6.     System.out.println ( “phương thức nhà máy” );  
  7.     trở lại  obj;  
  8. }  
  9. công khai void  dir () {   
  10.     System.out.println ( “xin chào người dùng” );  
  11. }  
  12. }  

applicationContext.xml

  1. <? xml phiên bản = “1.0”  mã hóa = “UTF-8” ?>  
  2. <đậu  
  3.     xmlns = “http://www.springframework.org/schema/beans”  
  4.     xmlns: xsi = “http://www.w3.org/2001/XMLSchema-instance”  
  5.     xmlns: p = “http://www.springframework.org/schema/p”  
  6.     xsi: lượcLocation = “http: //www.springframework.org/schema/beans   
  7. http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd “>  
  8.   
  9. <bean id = “a” class = “com.javatpoint.A”  Factory-method = “getA” > </ bean>   
  10.   
  11. </ đậu>  

Test.java

Lớp này lấy bean từ tệp applicationContext.xml và gọi phương thức trình thông báo.

  1. gói  org.sssit;  
  2. nhập  org.springframework.context.ApplicationContext;  
  3. nhập  org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.  Kiểm tra lớp học công cộng {   
  5. public static void  main (String [] args) {    
  6.     ApplicationContext bối cảnh = new  ClassPathXmlApplicationContext ( “applicationContext.xml” );  
  7.     A a = (A) bối cảnh.getBean ( “a” );  
  8.     a.msg ();  
  9. }  
  10. }  

Đầu ra:

nhà xây dựng tư nhân
phương pháp nhà máy
xin chào người dùng

Loại 2

Chúng ta hãy xem mã đơn giản để thêm phụ thuộc bằng phương thức tĩnh của nhà máy trả về thể hiện của một lớp khác.

Để tạo ví dụ này, chúng tôi đã tạo ra 6 tệp.

  1. Printable.java
  2. A.java
  3. B.java
  4. PrintableFactory.java
  5. applicationContext.xml
  6. Test.java

Printable.java

  1. gói  com.javatpoint;  
  2. giao diện công cộng Có  thể in {   
  3. khoảng trống  in ();  
  4. }  

A.java

  1. gói  com.javatpoint;  
  2. lớp công khai  A  thực hiện Có  thể in {   
  3.     @Ghi đè  
  4.     công khai void void  () {   
  5.         System.out.println ( “xin chào a” );  
  6.     }  
  7.   
  8. }  

B.java

  1. gói  com.javatpoint;  
  2. công lớp  B  thực hiện  có thể in {   
  3.     @Ghi đè  
  4.     công khai void void  () {   
  5.         System.out.println ( “xin chào b” );  
  6.     }  
  7. }  

PrintableFactory.java

  1. gói  com.javatpoint;  
  2. lớp công khai  PrintableFactory {   
  3. công khai tĩnh  có thể in getPrintable () {   
  4.     // trả về B () mới;  
  5.           trở lại mới  A (); // trả về bất kỳ một thể hiện nào, A hoặc B   
  6. }  
  7. }  

applicationContext.xml

  1. <? xml phiên bản = “1.0”  mã hóa = “UTF-8” ?>  
  2. <đậu  
  3.     xmlns = “http://www.springframework.org/schema/beans”  
  4.     xmlns: xsi = “http://www.w3.org/2001/XMLSchema-instance”  
  5.     xmlns: p = “http://www.springframework.org/schema/p”  
  6.     xsi: lượcLocation = “http: //www.springframework.org/schema/beans   
  7. http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd “>  
  8.   
  9. <bean id = “p” class = “com.javatpoint.PrintableFactory”  Factory-method = “getPrintable” > </ bean>   
  10.   
  11. </ đậu>  

Test.java

Lớp này lấy bean từ tệp applicationContext.xml và gọi phương thức print ().

  1. gói  org.sssit;  
  2. nhập  org.springframework.context.ApplicationContext;  
  3. nhập  org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.  Kiểm tra lớp học công cộng {   
  5. public static void  main (String [] args) {    
  6.     ApplicationContext bối cảnh = new  ClassPathXmlApplicationContext ( “applicationContext.xml” );  
  7.     Có thể in p = (Có thể in) bối cảnh.getBean ( “p” );  
  8.     p.print ();  
  9. }  
  10. }  

Đầu ra:

xin chào a

Loại 3

Chúng ta hãy xem ví dụ để thêm sự phụ thuộc bằng phương thức nhà máy không tĩnh trả về thể hiện của một lớp khác.

Để tạo ví dụ này, chúng tôi đã tạo ra 6 tệp.

  1. Printable.java
  2. A.java
  3. B.java
  4. PrintableFactory.java
  5. applicationContext.xml
  6. Test.java

Tất cả các tệp đều giống như trước đây, bạn chỉ cần thay đổi 2 tệp: PrintableFactory và applicationContext.xml.PrintableFactory.java

  1. gói  com.javatpoint;  
  2. lớp công khai  PrintableFactory {   
  3. // phương thức nhà máy không tĩnh  
  4. công khai  có thể in getPrintable () {  
  5.     trở lại mới  A (); // trả về bất kỳ một thể hiện nào, A hoặc B   
  6. }  
  7. }  

applicationContext.xml

  1. <? xml phiên bản = “1.0”  mã hóa = “UTF-8” ?>  
  2. <đậu  
  3.     xmlns = “http://www.springframework.org/schema/beans”  
  4.     xmlns: xsi = “http://www.w3.org/2001/XMLSchema-instance”  
  5.     xmlns: p = “http://www.springframework.org/schema/p”  
  6.     xsi: lượcLocation = “http: //www.springframework.org/schema/beans   
  7. http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd “>  
  8.   
  9. <bean id = “pfactory” class = “com.javatpoint.PrintableFactory” > </ bean>   
  10. <bean id = “p” class = “com.javatpoint.PrintableFactory”  Factory-method = “getPrintable”    
  11. nhà máy-bean = “pfactory” > </ bean>  
  12.   
  13. </ đậu>  

Đầu ra:

xin chào a

Bài viết gần đây

Java Lambda: Hướng dẫn cho người mới bắt đầu

Bài viết này giải thích các biểu thức Java Lambda trong Java 8. Biểu thức Lambda Java

Ví dụ về Tải xuống tệp từ máy chủ bằng cách sử dụng JSP

Trong ví dụ này, chúng tôi sẽ tải xuống tệp jsp. Nhưng bạn có thể tải xuống bất kỳ tập tin. 

Hướng dẫn sử dụng Spring JdbcTemplate

Spring JdbcTemplate là một cơ chế mạnh mẽ để kết nối với cơ sở dữ liệu và thực hiện các truy vấn SQL. Nó sử...

Hướng dẫn chủ đề Java

Một Instance of Thread là một đối tượng giống như bất kỳ đối tượng nào khác trong Java và nó chứa các biến và...

Tải tập tin lên máy chủ bằng cách sử dụng JSP

Có nhiều cách để tải tệp lên máy chủ. Một trong những cách là bởi lớp MultipartRequest. Để sử dụng lớp này,...

Ví dụ cấu hình Spring AOP AspectJ Xml

Spring cho phép bạn xác định các khía cạnh, lời khuyên và điểm nhấn trong tệp xml. Trong trang...

Leave a reply

Please enter your comment!
Please enter your name here