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

Spring Boot/Jersey组件扫描问题

邰建业
2023-03-14

我正在使用Spring Boot和Jersey开发一个小应用程序,我需要添加@ComponentScan来扫描第三方库中的一些服务。问题是,每当我添加@ComponentScan注释时,似乎Spring MVC DispatcherServlet就接管了它,我再也不能访问我的Jerseyendpoint(我添加注释时,Jersey Servlet看起来甚至都没有加载)。如何让组件扫描与我的Jerseyendpoint一起工作?

建筑格拉德尔

    buildscript {
    ext {
        springBootVersion = '1.5.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
  }

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

jar {
    baseName = 'demo'
    version = '0.0.1-SNAPSHOT'
}

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-jersey')
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

应用程序

@SpringBootApplication
@ComponentScan(basePackages = {"com.abc"})
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

配置

@Component
@Configuration
public class JerseyConfig extends ResourceConfig {
    @PostConstruct
    public void init() {
        packages("com.demo.rest.endpoint");

        register(new LoggingFeature(Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME), Level.INFO, LoggingFeature.DEFAULT_VERBOSITY, null));
    }
}

endpoint

@Component
@Path("/test")
public class TestEndpoint {
    @GET
    public String test() {
        return "Testing Jersey Endpoint";
    }
}

共有1个答案

支才
2023-03-14

jersey如何扫描Fatjar上的课程是个问题。保留所有内容,并在你的运动衫配置中添加注册课程。

@Component
@Configuration
public class JerseyConfig extends ResourceConfig 
{

     @PostConstruct
     public void init() {
     [...]

     register(TestEndpoint.class);
}
 类似资料:
  • 我正在使用一个带有spring boot 2.0.0.rc1的多项目分级器。我的子项目之一是SpringBoot应用程序,其中包含了我的集成测试。 集成测试用WebEnvironment.random_port标记为@springboottest。由于未解析的依赖关系(在另一个子项目中声明的服务,的同级),测试失败,使用了gradle命令行,但在Eclipse IDE中成功。 如果有人有主意?如何

  • 我正在写一个spring boot应用程序,它有两个实体班级,老师和部门。我使用的是JPA和H2内存数据库。当我运行应用程序时,表不是在h2数据库中创建的。我已经使用@ComponentScan注释指定了要扫描的包,但我认为spring没有找到实体类的位置。 应用程序类- Aauthor实体-

  • 我有一个eclipse java项目,在/src/main/java(包com.xxx.yyy)下。我还在/src/Test/java(包com.xxx.yyy)下有几个测试类。测试类(注释为@Service(value=“sampleclient”)公共类sampleclient{…}由位于/src/main/java下的一个包中的框架代码调用。 如果所有文件/包都位于/src/main/jav

  • 我找不到关于beans xml配置的文档,所以我在这里问:在 在概念上与Java中的包相同吗? 例如,在我的src/main/java(Eclipse中的项目资源管理器视图,平面包演示)中,假设我有4个包com.amazon、com.amazon.entities、com.amazon.services、com.amazon.repositories.在Navigator视图中,我只有“amazo

  • 我正在编写一个新的SpringBoot项目,其中我的根包名是“com.example”。在我的gradle配置中,我添加了一个第三方库的依赖项,它的根包名为“org.base”。现在,这个库中有带有@Component注释的类,我想在代码中使用@Autowired 在我的配置类中,我也扫描第三方库的基本包。 当我运行应用程序时,spring无法从这个库中找到/创建bean,我得到了一个bean n

  • 在spring boot应用程序中,我有一个包含应用程序类包,如 默认情况下,它自动从该类的包中设置ComponentScan。然后我有几个子包,每个子包包含几个组件和服务bean(使用注释)。但是为了对不同的用例重用这个应用程序,我需要启用/禁用一些子包中的所有组件,最好是通过一个属性。 那就是我有一些子包,比如 现在,基于某些属性,我想在其中一个包中启用(扫描)bean,例如。 我以为我可以使