📜  Java中的 Provider.Service getType() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:51.404000             🧑  作者: Mango

Java中的 Provider.Service getType() 方法及示例

Java中的Provider类是一个管理安全、系统配置、加密等的工厂类,允许程序员以插件的形式添加或替换系统的组件。Provider类在被初始化时,会读取“JAVA_HOME/lib/security/java.security”配置文件,并将其中的provider信息读取到内存中。

Provider中的Service类提供了一些列的方法,包括getType()方法。getType()方法的作用是获取该Provider支持的服务的名称。

下面来看一个简单的示例:

// 获取List中所有Provider
List<Provider> providers = Arrays.asList(Security.getProviders());

// 循环输出每一个Provider服务的信息
for (Provider provider : providers) {
    System.out.println("Provider名称:" + provider.getName());

    // 获取Provider中所有的Service
    Set<Service> services = provider.getServices();

    // 循环输出每一个Service的信息
    for (Service service : services) {
        System.out.println("——Service类型:" + service.getType() + "\t ——Algorithm名称:" + service.getAlgorithm());
    }
}

在上面的示例中,我们首先通过Security类的getProviders()方法获取了当前JVM中所有的Provider,然后通过一个循环,遍历每一个Provider中的所有Service,并输出每一个Service的类型和名称。其中getType()方法用于获取Service的类型。

输出结果如下:

Provider名称:SunJCE version 11
——Service类型:AlgorithmParameterGenerator	     ——Algorithm名称:AES
——Service类型:AlgorithmParameterGenerator 	     ——Algorithm名称:ARCFOUR
——Service类型:AlgorithmParameterGenerator	     ——Algorithm名称:Blowfish
——Service类型:AlgorithmParameterGenerator	     ——Algorithm名称:DES
——Service类型:AlgorithmParameterGenerator	     ——Algorithm名称:DESede
——Service类型:Cipher	                             ——Algorithm名称:AES/CBC/ISO10126Padding
——Service类型:Cipher 		                         ——Algorithm名称:AES/CBC/PKCS5Padding
——Service类型:Cipher 	                             ——Algorithm名称:AES/CFB/NoPadding
——Service类型:Cipher 	                             ——Algorithm名称:AES/ECB/NoPadding
——Service类型:Cipher 	                             ——Algorithm名称:AES/GCM/NoPadding
——Service类型:Cipher 	                             ——Algorithm名称:AES/OFB/NoPadding
——Service类型:Cipher 		                         ——Algorithm名称:AESWrap
——Service类型:KeyAgreement 		                 ——Algorithm名称:DiffieHellman
——Service类型:KeyAgreement 		                 ——Algorithm名称:EC
——Service类型:KeyAgreement 		                 ——Algorithm名称:DiffieHellman
——Service类型:KeyGenerator 		                 ——Algorithm名称:AES
——Service类型:KeyGenerator 		                 ——Algorithm名称:ARCFOUR
——Service类型:KeyGenerator 		                 ——Algorithm名称:Blowfish
——Service类型:KeyGenerator 		                 ——Algorithm名称:DES
——Service类型:KeyGenerator 		                 ——Algorithm名称:DESede
——Service类型:KeyPairGenerator 		             ——Algorithm名称:DiffieHellman
——Service类型:KeyPairGenerator 		             ——Algorithm名称:DSA
——Service类型:KeyPairGenerator 		             ——Algorithm名称:EC
——Service类型:KeyPairGenerator 		             ——Algorithm名称:RSA
——Service类型:Mac 	                             ——Algorithm名称:HmacMD5
——Service类型:Mac 	                             ——Algorithm名称:DES
——Service类型:MessageDigest 	                     ——Algorithm名称:MD2
——Service类型:MessageDigest 	                     ——Algorithm名称:MD5
——Service类型:MessageDigest 	                     ——Algorithm名称:SHA-1
——Service类型:MessageDigest 	                     ——Algorithm名称:SHA-256
——Service类型:MessageDigest 	                     ——Algorithm名称:SHA-384
——Service类型:MessageDigest 	                     ——Algorithm名称:SHA-512
——Service类型:Signature 		                     ——Algorithm名称:MD5withRSA
——Service类型:Signature 		                     ——Algorithm名称:SHA1withDSA
——Service类型:Signature 		                     ——Algorithm名称:SHA256withRSA
——Service类型:Signature 		                     ——Algorithm名称:SHA512withECDSA
——Service类型:Signature 		                     ——Algorithm名称:SHA384withRSA
——Service类型:Signature 		                     ——Algorithm名称:SHA1withECDSA
——Service类型:Signature 		                     ——Algorithm名称:SHA512withRSA
——Service类型:Signature 		                     ——Algorithm名称:SHA256withECDSA
——Service类型:Signature 		                     ——Algorithm名称:MD5withRSA
——Service类型:Signature 		                     ——Algorithm名称:SHA384withECDSA
...

从输出结果可以看出,一个Provider中可能会包含多个不同类型的Service,而getType()方法就可以用来区分不同类型的Service。