这是我的代码段。
这是我的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 );
并且在运行该应用程序时:
我收到了如下日志:
==> MyConfiguration{server=DefaultServerFactory{applicationConnectors=[io.dropwizard.jetty.HttpConnectorFactory@623e088f, io.dropwizard.jetty.HttpsConnectorFactory@39fcbef6], adminConnectors=[io.dropwizard.jetty.HttpConnectorFactory@34f22f9d, io.dropwizard.jetty.HttpsConnectorFactory@77d67cf3], adminMaxThreads=64, adminMinThreads=1, applicationContextPath=/, adminContextPath=/}, logging=DefaultLoggingFactory{level=INFO, loggers={}, appenders=[io.dropwizard.logging.ConsoleAppenderFactory@663411de]}}
==> com.mycompany.myproject.model.ProductionServer@5b04476e
表示成功获得了Yaml的价值。但是我的问题是在MyConfiguration类的DI或依赖项注入期间。尽管对象MyConfiguration在我的服务中似乎不为空,但我无法获得ProductionServer的值。
这是我绑定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() );
}
在调用方法invoke()的过程中,我得到了如下记录:
===============================
==> MyConfiguration{server=DefaultServerFactory{applicationConnectors=[io.dropwizard.jetty.HttpConnectorFactory@34e82c4d], adminConnectors=[io.dropwizard.jetty.HttpConnectorFactory@19b70fbd], adminMaxThreads=64, adminMinThreads=1, applicationContextPath=/, adminContextPath=/}, logging=DefaultLoggingFactory{level=INFO, loggers={}, appenders=[io.dropwizard.logging.ConsoleAppenderFactory@543f81c9]}}
==> null
现在我的问题是在MyService.class中的MyConfiguration类的DI或依赖项注入期间。尽管对象MyConfiguration在我的服务中似乎不为空,但我无法获得ProductionServer的值。请给我一些解决方案?thnx。
问题是,使用此配置
bind(MyConfiguration.class).to(MyConfiguration.class);
HK2将创建一个新实例MyConfiguration
。它不会与DW填充的实例相同。但是,您 可以 做的是使用DW创建的实例,只需在HK2配置中绑定该
实例 即可
public class MyApplication extends Application<MyConfiguration> {
@Override
public void run(final MyConfiguration config, Environment env) {
env.jersey().register(new AbstractBinder() {
@Override
protected void configure() {
bind(config).to(MyConfiguration.class);
}
});
}
}
这是我的代码片段。 MyConfiguration类: 应用程序类: 并且在运行此应用程序时: DependencyBinder.Class 导入org.glassfish.hk2.utilites.binding.abstractbinder; 公共类DependencyBinder扩展AbstractBinder{
我是新来的。我想知道他们的任何其他方法来设置连接端口,管理端口,记录器级别和所有配置参数,而不是通过使用。YML 文件。
还有什么方法可以让spring cloud配置客户端的应用程序。yml从spring配置服务器读取值?例如,在我的spring cloud config客户端上,应用程序。yml就是这样 还有我的引导程序。yml文件如下所示 对于服务url值,对于不同的环境,我必须配置不同的eureka url值,我的问题是,我是否可以在配置服务器中配置服务url值?就像我在应用程序中将值设置为${service
我们的项目中使用的是Spring Cloud config server,它有多个微服务。配置服务器就绪后,我们现在将所有微服务的所有属性存储在一个中央git存储库中。每个微服务能够根据应用程序名称和配置文件提取自己的属性文件。我们试图将资源包存储在中央存储库中,并让config-server将这些资源包提供给微服务。我们的资源包包括属性文件,如messages_en.properties、mes
有人能帮我吗?我想将SpringSleuth与我的SpringBoot微服务集成。我添加了依赖项。也尝试添加SLF4J与它一起。但它是打印普通日志。没有以侦探风格打印,如应用程序名称、span id、traceid等。我不确定它是否识别依赖关系?我需要添加任何其他依赖项吗?有属性文件吗? 你能指导准确的依赖性吗?以及具体的配置步骤?
当我们部署到pcf时,Netflix eureka、zuul、ribbon、feign spring cloud配置不有用?(如果是,在pcf中有哪些可选方案以及如何配置它们?) 由于构建微服务遵循CI/CD方法,开发人员在推送代码之前如何验证其微服务的工作,因为我们在生产PCF中没有使用eureka、zuul、ribbon、feign。(如何在developer Machine中模拟pcf环境?