gpt4 book ai didi

java - UnsatisfiedDependencyException 尝试在 eclipse 中配置基本的 spring-boot 项目

转载 作者:行者123 更新时间:2023-12-02 00:57:53 25 4
gpt4 key购买 nike

我正在尝试在 eclipse (使用 STS)中配置一个基本的 spring-boot 项目,我想在其中定义一个 Controller 类和一个实体类以在 Controller 中 Autowiring ,但我遇到了异常。我一直在尝试修复它,但现在我没有想法,有人可以帮助我吗?

一切正常(我可以在我的 Controller 中获取一个实体对象,并且http请求“http://localhost:8080/index”以正确的方式返回我的 View )......直到我在“Entidad”类中定义一个构造并且我得到异常(exception)。

这是我的代码:

package com.example.springMVC_ejemplo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringMvcBahiaProjectApplication {

public static void main(String[] args) {
SpringApplication.run(SpringMvcBahiaProjectApplication.class, args);
}

}
<小时/>
package com.example.springMVC_ejemplo.controller;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import com.example.springMVC_ejemplo.model.Entidad;

@Controller
public class MyController {

List<Entidad> exampleEntityList = new ArrayList<>();

// inject via application.properties
@Value("${index.message}")
private String message;

@Autowired
private Entidad entidad;

@PostConstruct
private void initExampleEntityList() {
String nombre = entidad.getNombre();
System.out.println("Inicializando la lista de entidades de ejemplo");
}

@GetMapping(value= {"/","/index"})
public String main(Model model) {
model.addAttribute("message", message);
return "index";
}

}
<小时/>
package com.example.springMVC_ejemplo.model;

import org.springframework.stereotype.Service;

@Service
public class Entidad {

private String nombre;
private String atributo1;
private String atributo2;

private Entidad(String nombre, String atributo1, String atributo2) {
super();
this.nombre = nombre;
this.atributo1 = atributo1;
this.atributo2 = atributo2;
}

public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getAtributo1() {
return atributo1;
}
public void setAtributo1(String atributo1) {
this.atributo1 = atributo1;
}
public String getAtributo2() {
return atributo2;
}
public void setAtributo2(String atributo2) {
this.atributo2 = atributo2;
}

}

我得到的异常(exception)是:

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.6.RELEASE)

2020-04-07 20:26:57.072 INFO 18236 --- [ main] c.e.s.SpringMvcBahiaProjectApplication : Starting SpringMvcBahiaProjectApplication on DESKTOP-40IFSQT with PID 18236 (C:\Users\ignac\OneDrive\Documentos\eclipse-workspace\springMVC_BahiaProject\target\classes started by ignac in C:\Users\ignac\OneDrive\Documentos\eclipse-workspace\springMVC_BahiaProject)
2020-04-07 20:26:57.075 INFO 18236 --- [ main] c.e.s.SpringMvcBahiaProjectApplication : No active profile set, falling back to default profiles: default
2020-04-07 20:26:57.682 INFO 18236 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-04-07 20:26:57.689 INFO 18236 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-04-07 20:26:57.689 INFO 18236 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.33]
2020-04-07 20:26:57.742 INFO 18236 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-04-07 20:26:57.743 INFO 18236 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 639 ms
2020-04-07 20:26:57.777 WARN 18236 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myController': Unsatisfied dependency expressed through field 'entidad'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'entidad' defined in file [C:\Users\ignac\OneDrive\Documentos\eclipse-workspace\springMVC_BahiaProject\target\classes\com\example\springMVC_ejemplo\model\Entidad.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.lang.String' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2020-04-07 20:26:57.779 INFO 18236 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2020-04-07 20:26:57.787 INFO 18236 --- [ main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-04-07 20:26:57.870 ERROR 18236 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.example.springMVC_ejemplo.model.Entidad required a bean of type 'java.lang.String' that could not be found.

The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'java.lang.String' in your configuration.

提前致谢!

最佳答案

您的Entidad 不应该是@Service。 (您会得到异常,因为 Spring 不知道将哪些字符串传递到构造函数中)

删除注释并且不要将其@Autowire到您的@Controller中。毕竟,它是一个简单的模型对象。

关于java - UnsatisfiedDependencyException 尝试在 eclipse 中配置基本的 spring-boot 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61087310/

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