当我尝试部署我的项目时,这提出了bean的问题,我无法解决它,我附加错误和生成它的类。我需要帮助解决这个问题。我提前谢谢你。
应用程序未能启动
描述:
co.com.coomeva.golden.service.ws.main.GreetingController中的字段发送方需要一个无法找到的“co.com.coomeva.golden.service.ws.jms.DistributorSender”类型的bean。注入点具有以下注释: - @ org.springframework.beans.factory.annotation.Autowired(required = true)操作:考虑定义类型为'co.com.coomeva.golden.service.ws.jms.DistributorSender的bean '在你的配置中。 22:41:15,280 ERROR [org.jboss.msc.service.fail](ServerService线程池 - 69)MSC000001:无法启动服务jboss.undertow.deployment.default-server.default-host./Golden:org。 jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./Golden:java.lang.RuntimeException:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'greetingController'的bean时出错:通过字段'发件人'表达的不满意的依赖;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为'co.com.coomeva.golden.service.ws.jms.DistributorSender'的限定bean:预计至少有1个bean可以作为autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}位于java.util.concurrent的org.wildfly.extension.undertow.deployment.UndertowDeploymentService $ 1.run(UndertowDeploymentService.java:84) .Executors $ RunnableAdapter.call(Unknown Source)java.util.concurrent.FutureTask.run(Unknown Source)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor $ Worker.run org.jboss.threads.JBossThread.run(JBossThread.java:320)中java.lang.Thread.run(未知来源)的(未知来源)引起:java.lang.RuntimeException:org.springframework.beans.factory。 UnsatisfiedDependencyException:创建名为'greetingController'的bean时出错:通过字段'sender'表示的不满意的依赖关系;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为'co.com.coomeva.golden.service.ws.jms.DistributorSender'的限定bean:预计至少有1个bean可以作为autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}位于org.wildfly.extension.undertow的io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:241)。 deploy.UndertowDeploymentService.startContext(UndertowDeploymentService.java:99)at org.wildfly.extension.undertow.deployment.UndertowDeploymentService $ 1.run(UndertowDeploymentService.java:81)... 6更多
package co.com.coomeva.golden.service.ws.main;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import co.com.coomeva.golden.service.ws.jms.*;
import co.com.coomeva.golden.service.ws.model.GoldenResponse;
@Configuration
@ComponentScan
@EnableAutoConfiguration
@SpringBootApplication(scanBasePackages = { "co.com.coomeva.golden.service.ws.controllers", "co.com.coomeva.golden.service.ws.jms.DistributorSender"})
public class GoldenServiceApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
private static Class<GoldenServiceApplication> applicationClass = GoldenServiceApplication.class;
}
@RestController
class GreetingController {
@Autowired
private DistributorSender sender;
@PostMapping("/distributor/records")
public GoldenResponse setGoldenRecord(@RequestBody String goldenRecord) {
GoldenResponse response = new GoldenResponse();
try {
sender.publishMessage(goldenRecord);
response.setCode(HttpStatus.OK.value());
response.setMessage("Golden Record Published");
} catch (Exception e) {
String error = e.getCause().toString();
error = error.length() > 200 ? error.substring(0, 200) : error;
response.setMessage("Golden Record was not published. Error:" + error);
}
return response;
}
@RequestMapping("/hello/{name}")
String hello(@PathVariable String name) {
return "Hello, " + name + "!";
}
@GetMapping("/Example2")
public GoldenResponse exampleDist() {
GoldenResponse goldenResponse = new GoldenResponse();
goldenResponse.setCode(1);
goldenResponse.setMessage("sd");
System.out.println("Vinagre");
return goldenResponse;
}
}
我转载了你的问题。以下是您需要进行的更改:
@SpringBootApplication(scanBasePackages ={"co.com.coomeva.golden.service.ws.jms","co.com.coomeva.golden.service.ws.main"})
DistributorSender
或@Component
这样的注释来使你的@Repository
类知道弹簧。Golden service application.Java
@SpringBootApplication(scanBasePackages = {"co.com.coomeva.golden.service.ws.jms","co.com.coomeva.golden.service.ws.main"})
public class GoldenServiceApplication extends SpringBootServletInitializer
{
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
private static Class<GoldenServiceApplication> applicationClass =
GoldenServiceApplication.class;
}
@RestController
class GreetingController {
@Autowired
private DistributorSender sender;
@PostMapping("/distributor/records")
public GoldenResponse setGoldenRecord(@RequestBody String goldenRecord)
{
GoldenResponse response = new GoldenResponse();
try {
sender.publishMessage(goldenRecord);
response.setCode(HttpStatus.OK.value());
response.setMessage("Golden Record Published");
} catch (Exception e) {
String error = e.getCause().toString();
error = error.length() > 200 ? error.substring(0, 200) : error;
response.setMessage("Golden Record was not published. Error:" + error);
}
return response;
}
@RequestMapping("/hello/{name}")
String hello(@PathVariable String name) {
return "Hello, " + name + "!";
}
@GetMapping("/Example2")
public GoldenResponse exampleDist() {
GoldenResponse goldenResponse = new GoldenResponse();
goldenResponse.setCode(1);
goldenResponse.setMessage("sd");
System.out.println("Vinagre");
return goldenResponse;
}
}
和DistributorSender.java
package co.com.coomeva.golden.service.ws.jms;
import org.springframework.stereotype.Component;
@Component
public class DistributorSender {
private String record;
public void publishMessage(String record) {
this.record = record;
}
}
请删除不必要的注释,@ComponentScan
,@Configuration
和@EnableAutoConfiguration
只有在给定代码之下,才能运行您的应用程序,直到您有任何特定要求。
@SpringBootApplication
public class GoldenServiceApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
private static Class<GoldenServiceApplication> applicationClass = GoldenServiceApplication.class;
}
Spring-boot应用程序的一个好习惯:
将您的Application类(具有@SpringBootApplication
注释的类)存储在主包上,并将所有其他*.java
文件放在此包下,以便Spring Application可以找到它们。