यहां मेरे कोड स्निपेट हैं।yml में मेरे कॉन्फ़िगरेशन मान कैसे प्राप्त करें - ड्रॉपविज़ार्ड (माइक्रोस्कोप) जर्सी डी.आई @ इंजेक्शन का उपयोग करके?
यहाँ मेरी YML फ़ाइल है:
productionServer:
host: production-server.amazonaws.com
publicIp: xx.xx.xx.xx
privateIp: xx.xx.xx.xx
userName: xx.xx.xx.xx
password: xx.xx.xx.xx
remoteFilePath: fake/path/
fileName: test.txt
privateKey: private-public-key.ppk
server:
applicationConnectors:
- type: http
port: 8080
- type: https
port: 8443
keyStorePath: key.keystore
keyStorePassword: password
validateCerts: false
adminConnectors:
- type: http
port: 8081
- type: https
port: 8444
keyStorePath: key.keystore
keyStorePassword: password
validateCerts: false
MyConfiguration वर्ग:
import io.dropwizard.Configuration;
public class MyConfiguration extends Configuration{
@NotNull
@JsonProperty
private ProductionServer productionServer;
// getters
public class ProdctionServer{
@NotEmpty
@JsonProperty
private host;
@NotEmpty
@JsonProperty
private publicIp;
// getters
आवेदन वर्ग:
import io.dropwizard.Application;
public class MyApplication extends Application<MyConfiguration> {
public static void main(String[] args) throws Exception{
new MysApplication().run(args);
}
@Override
public String getName(){ return "micro-service"; }
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap){}
@Override
public void run(MyConfiguration conf, Environment environment){
final MyResource myResource = new MyResource();
// health check
// environment.healthChecks().register("template",healthCheck);
System.out.println("==> " + conf);
System.out.println("==> " + conf.getProductionServer());
// register
environment.jersey().register(MyResource);
और जब इस अनुप्रयोग चल रहा है: मैं एक लॉग इन प्राप्त
अनुयायी के रूप में ows:
==> MyConfiguration{server=DefaultServerFactory{applicationConnectors=[[email protected], [email protected]], adminConnectors=[[email protected], [email protected]], adminMaxThreads=64, adminMinThreads=1, applicationContextPath=/, adminContextPath=/}, logging=DefaultLoggingFactory{level=INFO, loggers={}, appenders=[[email protected]]}}
==> [email protected]
जिसका अर्थ है कि यह सफलतापूर्वक मेरे यम का मूल्य प्राप्त हो जाता है। लेकिन मेरी समस्या डी.आई. या MyConfiguration कक्षा के निर्भरता इंजेक्शन के दौरान है। मुझे अपने प्रोडक्शनसेवर का मूल्य नहीं मिल सकता है, हालांकि ऑब्जेक्ट माई कॉन्फ़िगरेशन मेरी सेवा में शून्य नहीं है।
यहाँ MyService.class और MyConfiguration.class
DependencyBinder.class
आयात org.glassfish.hk2.utilities.binding.AbstractBinder बाध्यकारी निर्भरता के अपने कोड का टुकड़ा है,
सार्वजनिक वर्ग DependencyBinder फैली AbstractBinder {
@Override
protected void configure() {
bind(MyConfiguration.class).to(MyConfiguration.class);
bind(MyService.class).to(MyService.class);
}
MyService.class
public class MyService {
@Inject
MyConfiguration conf;
public void invoke(){
System.out.println("=============================== ");
System.out.println("==> " + conf);
System.out.println("==> " + conf.getProductionServer());
}
और वापस लाने() की प्रेरक दौरान ... मैं एक के रूप में लॉग इन किया गया इस प्रकार है:
===============================
==> MyConfiguration{server=DefaultServerFactory{applicationConnectors=[[email protected]], adminConnectors=[io.dropwizard.j[email protected]], adminMaxThreads=64, adminMinThreads=1, applicationContextPath=/, adminContextPath=/}, logging=DefaultLoggingFactory{level=INFO, loggers={}, appenders=[[email protected]]}}
==> null
अब मेरी समस्या DI या निर्भरता इंजेक के दौरान है MyService.class में MyConfiguration क्लास का टयन। मुझे अपने प्रोडक्शनसेवर का मूल्य नहीं मिल सकता है, हालांकि ऑब्जेक्ट माई कॉन्फ़िगरेशन मेरी सेवा में शून्य नहीं है। कृपया मुझे कुछ संकल्प दें? thnx।