微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bootstrap.properties的替换和注入不起作用

如何解决bootstrap.properties的替换和注入不起作用

在pom中,我定义了一些与配置文件相关的属性

<profiles>
        <profile>
            <!-- localhost -->
            <id>LOCAL</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <ADServiceUID>uid-c0a84980-33489f60-15ca1a4bd66--7ff7</ADServiceUID>
                <LDAPServiceUID>uid-c0a84980-4e8eaad4-15d55058ca2--7efe</LDAPServiceUID> 
                <WLAN_VPNServiceUID>uid-c0a84980-4e8eaad4-15d55058ca2--7ef6</WLAN_VPNServiceUID>
                <MailBoxServiceUID>uid-c0a84980-33489f60-15ca1a4bd66--7f1b</MailBoxServiceUID>
                <BiolAuthServiceUID>uid-7f001-5698ac8b-15e9a06bf32--7fbf</BiolAuthServiceUID>
                <HestAuthServiceUID>uid-c0a84980--166b2589-1646afda4f8--7ff0</HestAuthServiceUID>
                <ItetAuthServiceUID>uid-7f001-5698ac8b-15e9a06bf32--7fbd</ItetAuthServiceUID>
                <LdapsProxyServiceUID>uid-c0a84980--562f2389-15f29329a10--7126</LdapsProxyServiceUID>
                <OpenDirserviceUID>uid-c0a8f781--4baed631-15ec752b318--7d1a</OpenDirserviceUID>
                <PhysicMailServiceUID>uid-c0a84980-33489f60-15ca1a4bd66--7fed</PhysicMailServiceUID>
                <ADUserPrivGrpServiceUID>uid-ac10be8b-172512a1-15f483b1c37--7fc9</ADUserPrivGrpServiceUID>
            </properties>
        </profile>
    </profiles>

然后在bootstrap.properties中定义相同的道具,这些道具应根据构建应用程序时指定的配置文件进行设置

## UIDs of the IT-Services (set in pom)
it-service.ad = ${ADServiceUID}
it-service.ldap = ${LDAPServiceUID}
it-service.wlan_vpn = ${WLAN_VPNServiceUID}
it-service.mailBox = ${MailBoxServiceUID}
it-service.biolauth = ${BiolAuthServiceUID}
it-service.hestauth = ${HestAuthServiceUID}
it-service.itetauth = ${ItetAuthServiceUID}
it-service.ldaps_proxy = ${LdapsProxyServiceUID}
it-service.opendirectory = ${OpenDirserviceUID}
it-service.physik_mail = ${PhysicMailServiceUID}
it-service.ad_userprivategroup = ${ADUserPrivGrpServiceUID}

我运行mvn clean install,并且target / classes下的bootstrap.properties具有设置的值

## UIDs of the IT-Services (set in pom)
it-service.ad = uid-c0a84980-33489f60-15ca1a4bd66--7ff7
it-service.ldap = uid-c0a84980-4e8eaad4-15d55058ca2--7efe
it-service.wlan_vpn = uid-c0a84980-4e8eaad4-15d55058ca2--7ef6
it-service.mailBox = uid-c0a84980-33489f60-15ca1a4bd66--7f1b
it-service.biolauth = uid-7f001-5698ac8b-15e9a06bf32--7fbf
it-service.hestauth = uid-c0a84980--166b2589-1646afda4f8--7ff0
it-service.itetauth = uid-7f001-5698ac8b-15e9a06bf32--7fbd
it-service.ldaps_proxy = uid-c0a84980--562f2389-15f29329a10--7126
it-service.opendirectory = uid-c0a8f781--4baed631-15ec752b318--7d1a
it-service.physik_mail = uid-c0a84980-33489f60-15ca1a4bd66--7fed
it-service.ad_userprivategroup = uid-ac10be8b-172512a1-15f483b1c37--7fc9

尽管src / main / liberty / config下的同一文件仍然具有占位符。

此外,当我尝试在应用程序中读取这些属性时,它们为

@Inject
  @ConfigProperty( name = "it-service.ad" )
  private Provider<String> itServiceADUID;

  @Inject
  @ConfigProperty( name = "it-service.ldap" )
  private Provider<String> itServiceLdapUID;

  @Inject
  @ConfigProperty( name = "it-service.wlan_vpn" )
  private Provider<String> itServiceWlanVpnUID;

  @Inject
  @ConfigProperty( name = "it-service.mailBox" )
  private Provider<String> itServiceMailBoxUID;
...

private void initITServiceUIDs()
  {
    this.itServiceUIDs = new HashMap<>();
    this.itServiceUIDs.put("AD",this.itServiceADUID.get());  <--- line 230
    this.itServiceUIDs.put("Ldap",this.itServiceLdapUID.get());
    this.itServiceUIDs.put("MailBox",this.itServiceMailBoxUID.get());
    this.itServiceUIDs.put("Wlan_Vpn",this.itServiceWlanVpnUID.get());
...
  }

错误消息:

Caused by: java.lang.NullPointerException
[INFO]  at ch.ethz.id.sws.iamws.dirxwsclient.service.ServiceClient.initITServiceUIDs(ServiceClient.java:230)

我想念什么或做错什么了?

解决方法

Francesco,首先检查要向其注入config的类是否已作为CDI bean正确启用(带有bean反定义注解或存在有效的beans.xml)。

第二,您从哪里打来initITServiceUIDs?如果您从构造函数调用它,那么字段将尚未被注入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。