У меня есть два проекта загрузки весны A и B. Проект A - это общая библиотека, встроенная в банку; проект B - это веб-службы, упакованные в войну. Проект B имеет зависимость от A в pom.xml.Проект A. application.yml не был загружен в проект B, который имеет зависимость от A
В проекте 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, следующий тест не удалось из к нулевому свойству.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = AppB.class)
public class SDTTokenServiceTest {
@Autowired
private AConfig aConfig;
@Test
public void testAConfig() {
Assert.assertNotNull(aConfig.getAtrr1());
}
}
Почему проект B не может получить свойства в A? Как я могу это исправить? Благодаря!
Update: Оба YAML файлов находятся под их классами, может быть, что создает конфликт при импорте проект А на проект B. После того, как я переехал файл YAML в проекте А на другой путь classpath:config/application.yml
, то он работает правильно.
Кто-нибудь знает, как загружаются файлы yaml в этой ситуации? Почему это не работает, когда все они находятся под их собственным путом классов? Благодаря!
Это один JAR/WAR? – luboskrnac
@luboskrnac Project A - это общая библиотека, встроенная в банку; проект B - это веб-службы, упакованные в войну. – snowery