gpt4 book ai didi

java - 在部署 AWS Lambda 时设置 bean 属性 'mongoTemplate' 时无法解析对 bean 'mongoOperations' 的引用

转载 作者:行者123 更新时间:2023-12-03 03:55:24 25 4
gpt4 key购买 nike

我有一个用于在 AWS Lambda 中运行代码的 spring 云函数项目。
Spring Boot 应用程序在本地运行良好。但是在 AWS Lambda 中部署时会出现以下错误。

错误:-

{
"errorMessage": "Error creating bean with name 'associationService' defined in file [/var/task/org/qmetech/service/AssociationService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot resolve reference to bean 'mongoTemplate' while setting bean property 'mongoOperations'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mongoTemplate' available",
"errorType": "org.springframework.beans.factory.UnsatisfiedDependencyException",
"stackTrace": [

该项目有一个根项目,它有一个子项目“GetAssociationService”

根项目 - build.gradle
plugins {
id 'org.springframework.boot' version '2.2.5.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
id 'com.github.johnrengelman.shadow' version '5.2.0'
}

bootJar { enabled = false }

jar { enabled = true }

subprojects {
group = 'org.qmetech'
version = '1.0.0'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'java'
}

repositories { mavenCentral ( ) }

ext { set ( 'springCloudVersion' , "Hoxton.SR3" ) }

dependencies {
testImplementation ( 'org.springframework.boot:spring-boot-starter-test' ) {
exclude group: 'org.junit.vintage' , module: 'junit-vintage-engine'
}
}

ext.libraries = [
commonlibraries: ['org.springframework.boot:spring-boot-starter:2.2.5.RELEASE' ,
'org.springframework.cloud:spring-cloud-function-context' ,
'org.springframework.cloud:spring-cloud-function-adapter-aws:2.0.1.RELEASE' ,
'com.amazonaws:aws-lambda-java-log4j:1.0.0' ,
'org.springframework.boot:spring-boot-starter-web:2.2.5.RELEASE' ,
'org.springframework.cloud:spring-cloud-starter-function-web:1.0.0.RELEASE' ,
'org.springframework.boot.experimental:spring-boot-thin-layout:1.0.11.RELEASE' ,
'org.springframework.cloud:spring-cloud-starter-function-web:1.0.0.RELEASE' ,
'org.springframework.data:spring-data-mongodb:2.2.5.RELEASE'
] ,
]

dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}

test { useJUnitPlatform ( ) }

ChildProject - build.gradle
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
mavenCentral()
}

springBoot {
mainClassName = 'org.qmetech.GetAssociationService'
}

dependencies {
dependencies {
compile libraries.commonlibraries
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
}
}

UserRepository.java
package org.qmetech.repository;

import org.qmetech.domain.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends MongoRepository<User, Integer> { }

AssociationService.java
package org.qmetech.service;

import org.qmetech.domain.User;
import org.qmetech.repository.UserRepository;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.function.Function;

@Component
public class AssociationService implements Function<String, List<User>> {

private final UserRepository userRepository;

public AssociationService(UserRepository userRepository) {
this.userRepository = userRepository;
}

@Override
public List<User> apply(String uppercaseRequest) {
List<User> users = userRepository.findAll();
return users;
}
}

完整代码可在此处找到 - https://github.com/iftekharkhan09/Services

谁能告诉我我做错了什么?

谢谢!

最佳答案

您需要创建 MongoTemplate 的 bean因为默认配置没有注入(inject)。

@Bean
public MongoClient mongoClient() {
return new MongoClient("localhost", 27017);
}

@Bean
public MongoTemplate mongoTemplate(MongoClient mongoClient) throws Exception {
return new MongoTemplate(mongoClient, "databaseName");
}

另外,不要忘记使用 com.mongodb.client.MongoClient它取代了推荐的 com.mongodb.MongoClient从 Spring Boot 2.2 开始。

关于java - 在部署 AWS Lambda 时设置 bean 属性 'mongoTemplate' 时无法解析对 bean 'mongoOperations' 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60692848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com