Spring Boot 2.0 JNDI 属性值未从应用程序测试属性文件加载

我正在尝试运行 application-test.properties 文件中配置的测试用例和 jndi 属性


@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = { App.class }, webEnvironment = WebEnvironment.RANDOM_PORT)

@ContextConfiguration

@TestPropertySource("classpath:/application-test.properties")

public class CheckingServiceTest {

属性文件中的配置


java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory

java.naming.provider.url=remote://xyz:4447,remote://xyz:4447

java.naming.security.principal=qaappmq

java.naming.security.credentials=xyz123

jms.username=qaappmq

jms.password=ixyz123

jboss.naming.client.ejb.context=true

在 XML 配置文件中


<bean id="JNDITemplate" class="org.springframework.jndi.JndiTemplate">

        <constructor-arg name="environment">

            <props>

                <prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>

                <prop key="java.naming.provider.url">${java.naming.provider.url}</prop>

                <prop key="java.naming.security.principal">${java.naming.security.principal}</prop>

                <prop key="java.naming.security.credentials">${java.naming.security.credentials}</prop>

                <prop key="jboss.naming.client.ejb.context">${jboss.naming.client.ejb.context}</prop>

            </props>

        </constructor-arg>

    </bean>


尝试将静态值直接放入 bean 初始化中,它工作正常,甚至应用程序在 application.properties 中提到的默认配置下也能正常工作。


问题:属性值未在 XML 配置文件中初始化


慕盖茨4494581
浏览 146回答 3
3回答

白衣非少年

添加@ActiveProfiles("test")到您的测试类@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes = { App.class }, webEnvironment = WebEnvironment.RANDOM_PORT)@ContextConfiguration@TestPropertySource("classpath:/application-test.properties")@ActiveProfiles("test")public class CheckingServiceTest {

萧十郎

尝试将您的 TestPropertySource 注释更改为:@TestPropertySource(locations = "classpath:application-test.properties")

繁花不似锦

从项目中删除 XML 配置并尝试创建每个 bean 注释驱动。使用@Value 为每个变量赋值或使用创建单独的类&nbsp;@Configuration&nbsp;public class TestConfiguration {@Bean(name = "publishJNDITemplate")public JndiTemplate publishJNDITemplate() {&nbsp; &nbsp; final Properties environment = new Properties();&nbsp; &nbsp; environment.put(Context.INITIAL_CONTEXT_FACTORY, factoryIntial);&nbsp; &nbsp; environment.put(Context.PROVIDER_URL, providerUrl);&nbsp; &nbsp; environment.put(Context.SECURITY_PRINCIPAL, securityPrincipal);&nbsp; &nbsp; environment.put(Context.SECURITY_CREDENTIALS, securityCredentials);&nbsp; &nbsp; environment.put(narfeedTopics, destination);&nbsp; &nbsp; return new JndiTemplate(environment);}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java