为了账号安全,请及时绑定邮箱和手机立即绑定

在 JBoss 上启动 Spring webapp 问题

在 JBoss 上启动 Spring webapp 问题

BIG阳 2022-07-27 20:23:32
当我尝试部署我的项目时,这会出现 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 错误 [org.jboss.msc.service.fail] (ServerService 线程池 -- 69) MSC000001: 无法启动服务 jboss.undertow.deployment.default-server.default-host./Golden: org. jboss.msc.service.StartException 在服务 jboss.undertow.deployment.default-server.default-host./Golden: 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。依赖注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:84) at java.util.concurrent 
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我转载了你的问题。以下是您需要进行的更改:

  1. @SpringBootApplication(scanBasePackages ={"co.com.coomeva.golden.service.ws.jms","co.com.coomeva.golden.service.ws.main"})

  2. 您需要使用或DistributorSender之类的注释使您的班级具有弹簧意识。@Component@Repository

GoldenServiceApplication.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;

}


}


查看完整回答
反对 回复 2022-07-27
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

请删除不必要的注释@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;

}


查看完整回答
反对 回复 2022-07-27
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

Spring-boot 应用程序的一个好习惯:

将您的 Application 类(具有@SpringBootApplication注释的类)存储在主包中,并将所有其他*.java文件放在该包下,以便 Spring Application 可以找到它们。


查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信