File tree 6 files changed +80
-0
lines changed
CoreJavaProjects/ServiceLoader-Example
resources/META-INF/services
6 files changed +80
-0
lines changed Original file line number Diff line number Diff line change
1
+ <project xmlns =" http://maven.apache.org/POM/4.0.0"
2
+ xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
4
+ <modelVersion >4.0.0</modelVersion >
5
+ <groupId >com.journaldev.java</groupId >
6
+ <artifactId >ServiceLoader-Example</artifactId >
7
+ <version >0.0.1-SNAPSHOT</version >
8
+
9
+ <build >
10
+ <plugins >
11
+ <plugin >
12
+ <groupId >org.apache.maven.plugins</groupId >
13
+ <artifactId >maven-compiler-plugin</artifactId >
14
+ <configuration >
15
+ <source >11</source >
16
+ <target >11</target >
17
+ </configuration >
18
+ </plugin >
19
+ </plugins >
20
+ </build >
21
+ </project >
Original file line number Diff line number Diff line change
1
+ package com .journaldev .serviceproviders ;
2
+
3
+ public class EmailServiceProvider implements MessageServiceProvider {
4
+
5
+ public void sendMessage (String message ) {
6
+ System .out .println ("Sending Email with Message = " +message );
7
+ }
8
+
9
+ }
Original file line number Diff line number Diff line change
1
+ package com .journaldev .serviceproviders ;
2
+
3
+ public interface MessageServiceProvider {
4
+
5
+ void sendMessage (String message );
6
+ }
Original file line number Diff line number Diff line change
1
+ package com .journaldev .serviceproviders ;
2
+
3
+ public class PushNotificationServiceProvider implements MessageServiceProvider {
4
+
5
+ public void sendMessage (String message ) {
6
+ System .out .println ("Sending Push Notification with Message = " +message );
7
+ }
8
+
9
+ }
Original file line number Diff line number Diff line change
1
+ package com .journaldev .test ;
2
+
3
+ import java .util .Optional ;
4
+ import java .util .ServiceLoader ;
5
+
6
+ import com .journaldev .serviceproviders .MessageServiceProvider ;
7
+
8
+ public class ServiceLoaderTest {
9
+
10
+ public static void main (String [] args ) {
11
+ ServiceLoader <MessageServiceProvider > serviceLoader = ServiceLoader .load (MessageServiceProvider .class );
12
+
13
+ for (MessageServiceProvider service : serviceLoader ) {
14
+ service .sendMessage ("Hello" );
15
+ }
16
+
17
+ // using Java 8 Optional to get the first service
18
+ Optional <MessageServiceProvider > firstService = serviceLoader .findFirst ();
19
+ if (firstService .isPresent ()) {
20
+ firstService .get ().sendMessage ("Hello Friend" );
21
+ }
22
+
23
+ // using Java 8 forEach() method
24
+ serviceLoader .forEach ((service ) -> service .sendMessage ("Have a Nice Day!" ));
25
+
26
+ // Total Number of Loaded Services
27
+ System .out .println (serviceLoader .stream ().count ());
28
+
29
+
30
+
31
+ }
32
+
33
+ }
Original file line number Diff line number Diff line change
1
+ com.journaldev.serviceproviders.EmailServiceProvider
2
+ com.journaldev.serviceproviders.PushNotificationServiceProvider
You can’t perform that action at this time.
0 commit comments