İlkbahar-önyükleme sırasında mongodb için otomatik yapılandırmayı devre dışı bırakmayı deneyen var mı?İlkbahar-önyüklemede yay-veri-mongodb otomatik yapılandırma nasıl devre dışı bırakılır
İlkbahar-önyüklemeli bahar veriyle çalışıyorum; Java tabanlı konfigürasyon kullanma; İlkbahar-önyükleme 1.2.1.RELEASE kullanarak, ilkbahar-önyükleme-başlatıcı-web ve onun bağımlılık yönetimi için ana pompayı ithal ediyorum. Ben de bahar-veri-mongodb ithal (bahar-boot-starter-mongodb da denedim).
İki farklı MongoDB sunucusuna bağlanmam gerekiyor. Bu yüzden mongo bağlantısı, MongoTemplate vb. Için iki örnek setini yapılandırmam gerekiyor. Ayrıca otomatik yapılandırmayı da devre dışı bırakmak istiyorum. Birden fazla sunucuya bağlandığım için, tek bir varsayılan MongoTemplate ve GridFsTemplate bean'in otomatik olarak yapılandırılmış olmasına gerek yok.
Benim asıl sınıf şuna benzer:
@Configuration
@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@ComponentScan
//@SpringBootApplication // @Configuration @EnableAutoConfiguration @ComponentScan
public class MainRunner {
public static void main(String[] args) {
SpringApplication.run(MainRunner.class, args);
}
}
Benim iki Mongo yapılandırma sınıfları şu şekilde görünür:
@Configuration
@EnableMongoRepositories(basePackageClasses = {Test1Repository.class},
mongoTemplateRef = "template1",
includeFilters = {@ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*Test1Repository")}
)
public class Mongo1Config {
@Bean
public Mongo mongo1() throws UnknownHostException {
return new Mongo("localhost", 27017);
}
@Primary
@Bean
public MongoDbFactory mongoDbFactory1() throws UnknownHostException {
return new SimpleMongoDbFactory(mongo1(), "test1");
}
@Primary
@Bean
public MongoTemplate template1() throws UnknownHostException {
return new MongoTemplate(mongoDbFactory1());
}
}
ve
@Configuration
@EnableMongoRepositories(basePackageClasses = {Test2Repository.class},
mongoTemplateRef = "template2",
includeFilters = {@ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*Test2Repository")}
)
public class Mongo2Config {
@Bean
public Mongo mongo2() throws UnknownHostException {
return new Mongo("localhost", 27017);
}
@Bean
public MongoDbFactory mongoDbFactory2() throws UnknownHostException {
return new SimpleMongoDbFactory(mongo2(), "test2");
}
@Bean
public MongoTemplate template2() throws UnknownHostException {
return new MongoTemplate(mongoDbFactory2());
}
}
her şey çalışıyor bu kurulumla. MongoDbFactory1 ve template1 çekirdeklerinden @ Öntanımlı açıklamaları kaldırırsam, uygulama otomatik yapılandırma yapılandırılmamış gibi görünen bir istisna ile başarısız olur. İstisna mesajı aşağıda listelenmiştir: Emin EnableAutoConfiguration veya SpringBootApplication ek not başka sınıfları vardır yapmak dışlama listesi ile EnableAutoConfiguration kullanırken
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:961)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:950)
at com.fourexpand.buzz.web.api.template.MainRunner.main(MainRunner.java:26)
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:75)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:378)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
... 7 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.core.io.ResourceLoader org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.resourceLoader; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'gridFsTemplate' defined in class path resource [org/springframework/boot/autoconfigure/mongo/MongoDataAutoConfiguration.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.data.mongodb.MongoDbFactory]: : No qualifying bean of type [org.springframework.data.mongodb.MongoDbFactory] is defined: expected single matching bean but found 2: mongoDbFactory2,mongoDbFactory1; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.data.mongodb.MongoDbFactory] is defined: expected single matching bean but found 2: mongoDbFactory2,mongoDbFactory1
Eğer 'SpringBootApplication' veya' EnableAutoConfiguration' ile açıklamalı başka sınıfları var mı? –
"MongoRepositoriesAutoConfiguration" işlevini de dışlamaya çalışın. –
@AndyWilkinson utanç verici bir şekilde SpringBootApplication ile başka bir ders notu ekledim. Birden fazla giriş noktası vardı - test için ana ve Apache Daemon + jsvc koşucusu üretim içindeydim ve sadece tek bir yere yerleştirmek yerine tüm ek açıklamaları kopyalayıp yapıştırdım ... MongoRepositoriesAutoConfiguration dışlamada gerekli olmadığı ortaya çıktı ... –