uts*_*and 5 java spring mongodb spring-boot
我是 Spring Boot 和 mongoDB 的新手,请帮忙。
我得到了通过 mongoTemplate 表达的不满足的依赖,我无法找到它的根本原因。下面是它的堆栈跟踪。
"org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'gmailPullHandler': Unsatisfied dependency expressed through field 'gmailPullService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'gmailPullService': Unsatisfied dependency expressed through field 'gmailMailDataRepository'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'gmailMailDataRepositoryImpl': Unsatisfied dependency expressed through field 'mongoTemplate'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mongoTemplate' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]: Unsatisfied dependency expressed through method 'mongoTemplate' parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mappingMongoConverter' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]: Unsatisfied dependency expressed through method 'mappingMongoConverter' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoMappingContext' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.StackOverflowError
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)
at com.plash.configurator.Application.main(Application.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Run Code Online (Sandbox Code Playgroud)
由于有三个不满意的依赖项导致错误,我无法找到它。
注意: gmailMailDataRepository 类由 MongoRepository、GmailMailDataRepositoryCustom 扩展
gmailMailDataRepository :
@Repository
public interface GmailMailDataRepository extends MongoRepository<GmailMailData, String>, GmailMailDataRepositoryCustom {
{'threadidslist.threadid':?1}{'useremail':?2}")
List<GmailMailData> getListByThreadidmMsgidEmailid(String messagid, String threadid, String useremail);
void saveObjectToMsgList(GmailMessages gm, String useremailid, String threadid, String prospectemailid);
}
Run Code Online (Sandbox Code Playgroud)
下面是 GmailMailDataRepositoryCustom 和 GmailMailDataRepositoryImpl:
GmailMailDataRepositoryCustom:
public interface GmailMailDataRepositoryCustom {
void saveObjectToMsgList(GmailMessages g, String useremailid, String threadid, String prospectemailid);
}
Run Code Online (Sandbox Code Playgroud)
GmailMailDataRepositoryImpl:
public class GmailMailDataRepositoryImpl implements GmailMailDataRepositoryCustom {
// private final MongoOperations operations;
@Autowired
private MongoTemplate mongoTemplate;
Update update = new Update();
@Override
public void saveObjectToMsgList(GmailMessages gm, String useremailid, String threadid, String prospectemailid) {
Query query = new Query(Criteria.where("useremail").is(useremailid).and("prospectemailid").is(prospectemailid).and("threadidslist.threadid").is(threadid));
update.push("threadidslist.$.messagelist", gm);
mongoTemplate.updateFirst(query, update, GmailMailData.class);
}
Run Code Online (Sandbox Code Playgroud)
mongo 的 Application.properities 配置如下:
spring.data.mongodb.host=localhost
spring.data.mongodb.password=#########
spring.data.mongodb.port=27017
spring.data.mongodb.repositories.enabled=true
Run Code Online (Sandbox Code Playgroud)
构建.gradle:
compile("org.springframework.boot:spring-boot-starter-data-mongodb")
Run Code Online (Sandbox Code Playgroud)
问题解决了。这是模型级别的错误。
列表投射错误。
@Data
@Document(collection = "GmailOtherMailData")
public class GmailOtherMailData {
@Id
private String id;
private String useremail;
private List<GmailOtherThreads> threadidslist;
}
Run Code Online (Sandbox Code Playgroud)
我应该在列表中投射 GmailOtherThreads 对象,但我正在使用其他一些对象。由于错误的转换,我在代码中到处都出现错误。
| 归档时间: |
|
| 查看次数: |
9527 次 |
| 最近记录: |