当前位置: 首页 > 知识库问答 >
问题:

在添加@ComponentScan从一个jar加载bean之后,我的控制器不是扫描的,我得到的是404

卞琨
2023-03-14

我有一个spring-boot应用程序(Java8,spring-boot 2.1.4版本)。

业务层中的一个服务需要@autowire来自我的类路径中的某个jar中的bean。为了实现这一点,我必须添加@ComponentScan({“package.to.my.bean.inside.the.jar”})并成功地对其进行了扫描和连线(这是添加到声明main方法的主spring-boot类中的)。

主spring-boot应用程序类:

package com.liav.ezer;

// This is the problematic addition that cause the endpoints to stop
// inside a jar in the classpath, in com.internal.jar package resides an 
// object which i need to wire at run time
@ComponentScan({"com.internal.jar"})
@SpringBootApplication
public class JobsApplication {
    public static void main(String[] args) {
        SpringApplication.run(JobsApplication .class, args);
        }
}

控制器示例:

package com.liav.ezer.controller;

@RestController
@EnableAutoConfiguration
@RequestMapping(path = "/jobs")
public class JobController {

    @GetMapping(path="/create", produces = "application/json")
    @ResponseStatus(HttpStatus.OK)
    String createJob(@RequestParam() String jobName) String jobName){       
        return "job created...";
    }
}

我尝试将我的spring-boot应用程序基本包添加到@ComponentScan的包列表中,但没有成功。我试图缩小包声明的范围,使其仅限于我需要的类,但没有运气。这是密码

共有1个答案

上官鸿朗
2023-03-14

如果是,删除@ComponentScan,可以在自己的配置中声明该bean。请在下面尝试

@SpringBootApplication
public class JobsApplication {
    public static void main(String[] args) {
        SpringApplication.run(JobsApplication .class, args);
        }
     @Bean
     public BeanInOtherJar xxBean(){
        return new com.internal.jar.XXX();
     }
}
 类似资料:
  • 我想了解一些关于Spring的东西。我正在尝试配置它,但是有些东西我不明白,因为Spring似乎不认识我的控制器。 这是我的web.xml 这就是servlet 控制器:

  • 我是Android新手。我创建了一个Android应用程序来计算股票平均价格。 用户输入他们购买的股票和购买时的价格。 我使用下面的公式来实现这个结果。但是,当我没有划分平均价格时,逻辑给了我加法。 1.购买的股份总数=购买的股份(第一)购买的股份(第二)2。总购买金额=股票购买价格(第一)股票购买价格(第二)3。股票平均价格=总购买金额/总购买股份 一切都很好,但问题出在第三步。也许我错过了什么

  • 如果一个表达式包含任何整数大小或更小的内容,其结果总是整数,即使两个字节之和适合一个字节。 为什么我们在一个字节中添加最后两个字节时会发生这种情况?没有编译器错误。

  • 问题内容: 我想从另一个控制器的函数中加载一个控制器,因为我集成到项目中的库我不想将其加载到控制器中,因为我想保持它的清洁和相关性。 我有默认的控制器,所以我可以加载,这样我怎么能从main函数访问控制器,所以我不必将控制器放在url中。 如果我可以从主控制器功能中加载控制器功能,我仍然愿意使用HMVC。 问题答案: 您无法从CI中的控制器加载控制器-除非您使用HMVC或其他工具。 您应该考虑一下

  • 我有两个意图。主要活动:包含回收器视图,显示一些默认项以确保其工作。ArrayList被设置为Recycerer视图,它是包含这些默认项的列表。

  • 返回文件的URL。 starfxdemodoc.fxml为: 而StarfXDemodocController.java是这样的: 有谁能帮我一下吗? 编辑/更新: 根据james_d的评论(谢谢你James,显然我已经盯着这个问题太久了……),我修复了控制器中的明显错误,并将SimNameField设置为TextField,而不是Label(并更新了上面的代码块以反映这一点)。我还将异常处理更改