我有兩個彈簧引導項目A和B.項目A是內置到jar中的公共庫;項目B是打包成戰爭的Web服務。項目B在pom.xml中依賴於A.項目A的application.yml沒有加載到項目B中,它依賴於A
在項目答:
@SpringBootApplication
@PropertySource("classpath:application.yml")
@ComponentScan({ "com.a" })
public class AppA {
}
@Configuration
@ConfigurationProperties(prefix="a")
@Data
public class AConfig {
private String attr1; //in application.yml under project A's classpath
}
在項目中的下列測試通過:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = AppA.class)
public class SDTTokenServiceTest {
@Autowired
private AConfig aConfig;
@Test
public void testAConfig() {
Assert.assertNotNull(aConfig.getAtrr1());
}
}
在項目B:
@SpringBootApplication
@Import(AppA.class)
@PropertySource("classpath:application.yml")
@ComponentScan({ "com.b" })
public class AppB {
}
在項目B,下面的測試失敗原因到null屬性。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = AppB.class)
public class SDTTokenServiceTest {
@Autowired
private AConfig aConfig;
@Test
public void testAConfig() {
Assert.assertNotNull(aConfig.getAtrr1());
}
}
爲什麼項目B無法獲得A中的屬性?我怎樣才能解決這個問題?謝謝!
更新: 兩個YAML文件是他們的類路徑下,也許這造成衝突時,項目B.後,我在項目中的YAML文件移動到不同的路徑classpath:config/application.yml
進口項目A,那麼它工作正常。
有沒有人知道在這種情況下yaml文件是如何加載的?當他們都在自己的類路徑下時,爲什麼它不工作?謝謝!
它在一個JAR/WAR中嗎? – luboskrnac
@luboskrnac項目A是一個內置於一個罐子裏的通用庫;項目B是打包成戰爭的Web服務。 – snowery