问题标签 [component-scan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2315 浏览

java - “cvc-complex-type.2.4.c:匹配通配符是严格的,但找不到元素‘context:component-scan’的声明。”

我的 spring-servlet.xml 中出现以下错误

匹配的通配符是严格的,但找不到元素“context:component-scan”的声明。

我的 spring-servlet.xml 有以下内容:

我下载了所有依赖项

0 投票
1 回答
354 浏览

spring - 使用 spring 组件扫描时 Alfresco personService.createPerson 错误

几周前,我开发了一个基于 Alfresco 3.4.14 的 AMP。在那个模块中,我创建了一些定制服务。其中一项服务用于管理用户,并提供了一种创建新用户的方法:

所有服务都在露天上下文文件中定义:

一切正常。我能够创建用户,执行我的其他定制服务......直到这里完美!!!!!!!!!该应用程序运行正常。


几天前,我们决定开始使用spring注解,而不是定义上下文中的所有bean:

在上下文文件中,使用 spring 组件扫描:

所有服务都正常工作,应用程序看起来也正常工作。我们很高兴,因为我们可以使用注释解耦我们的应用程序。

BUTTTTTTTTTTTT,当我尝试通过资源管理器或通过应用程序创建用户时,我得到了同样的错误:Failed to create Person due to error: xxxxxxx beforeCreateNode: use PersonService to create person

在此处输入图像描述

0 投票
2 回答
9412 浏览

java - 将包添加到组件扫描

我有一个带有 Spring 容器的项目。假设这个项目被调用my-common-library并使用 namespace my.common。它扫描此命名空间中的所有组件,common-context.xml如下所示

除其他事项外,此扫描检测使用 注释的类@MyComponent

现在我想尽可能充分地重用这个项目。假设我开始了一个my-client在 namespace 中使用的新项目my.clientmy-client主要由带有注释的组件组成@MyComponent

在理想的世界中,我只需添加依赖项my-common-library,所有@MyComponents 都将被扫描和注册。唯一的问题是新的命名空间对原来的my-common-library.

我知道的一种解决方案是添加一个common-context.xml看起来my-client像的更新

这肯定会奏效,但似乎很脆弱。有没有更优雅的解决方案?

0 投票
2 回答
2142 浏览

java - @Autowired 不适用于 resteasy

我知道之前有人问过这个问题,但是我已经根据提供的所有答案检查了这段代码,但仍然看不出它有什么问题......我的@Autowired 字段根本没有被注入(即它们为空),在这里是我的设置:

  • 雄猫 7
  • 轻松3.0.8
  • Spring框架4.0.6
  • 爪哇 8

pom.xml(相关依赖)

web.xml

应用程序上下文.xml

最后是我的 Java 类:

我也尝试用 @Component 注释类本身,但它没有帮助。

提前致谢!

0 投票
2 回答
5313 浏览

java - 组件扫描无法检测到接口bean?

这是我在 spring mvc 项目(3.2.8 RELEASE)中的 root-context.xml 的一部分。

我得到了一些像下面这样的结构。

我的源代码中有 2 个注释。一个@Repository在我的 DaoImpl 类上,另一个@Service在我的服务接口上。

我用 JUnit(4.7) 运行它。DAOImpl 的东西像我预期的那样工作正常,但服务不起作用。我知道我可以使用@Service接口,但不知何故这种情况不能。

错误信息在这里

有没有@Service在界面上使用组件扫描 xml 设置和注释的好示例,以便我可以与我的比较?

感谢您的帮助:D

0 投票
1 回答
2104 浏览

java - @ComponentScan 和 @Autowired 无法从特定包注入

我知道关于这个问题的许多类似问题,但是,没有一个解决了我的问题。我有一个 Spring REST 项目,我正在使用 Spring Tool Suite (STS) 3.5.1 RELEASE。

应用类:

存储库类:

Service 类(Autowire 在这里无法注入 actorRepository):

REST 服务(Autowired 无法注入 actorService - 我认为这是因为 ActorService 未能注入 ActorRepository):

我认为它发生的原因是@ComponentScan 没有扫描存储库包,因为在 STS 中,Spring 类的 Java 图标右上角有一个小 S。这出现在所有应该被扫描的类上(除了存储库包中的任何东西之外的组件)。将存储库类移动到 rest 包会使它们被扫描(不知道为什么!)。

这是我尝试使用 Spring Boot App 运行项目时遇到的问题的一部分。

0 投票
1 回答
4619 浏览

java - @ComponentScan basePackageClasses 有命名约定吗?

Spring 的 @ComponentScan 提供了一个类型安全的basePackageClasses属性 - 使用起来似乎是一件好事,尤其是在我正在处理的项目中重命名包的情况并不少见。文档说:

考虑在每个包中创建一个特殊的无操作标记类或接口,除了被此属性引用之外没有其他用途。

...但没有提供有关此类名称的进一步指导。我想知道这方面是否有任何约定。package-info.java已经存在于所有包中(由 Checkstyle 强制执行) - 本来希望重用它,但遗憾的是 Java 不允许使用此名称的类。

(如果不存在这样的标准,我可能会考虑PackageInfo,或类似的标准BasePackagePackageMarker但如果有的话,更愿意遵循约定。)

0 投票
0 回答
56 浏览

spring - spring 组件扫描功能如何确保您的网站安全不受影响?

假设我有一个工作的 spring mvc web 应用程序,其中包括以下内容,

显然这个项目依赖于一些第三个开源库,包括 spring 框架等,

我如何确保这些库的供应商永远不会发布新版本的 jars,其中秘密(或意外)包含一个带@Controller注释的类,例如com.my_company.my_prj.my_controller_pkg.Format_C_Drive_Controller.java,和 BOOM!,我的网站新版本将为任何人打开一扇门格式化我的C盘在服务器上。

有没有办法让spring组件扫描只从我完全控制的一些预定义的jar文件或类路径目录中加载bean?

谢谢

0 投票
1 回答
1048 浏览

spring - Grails:如何使用 bean build DSL 指定 Spring 组件扫描排除项

我有一些使用注释声明的 Spring 组件,我需要在 Grails 应用程序中使用它们。

我需要做的是从基础包中扫描组件,同时排除包内的一些组件,使用 resources.groovy 中的 BeanBuilder DSL。这就是我使用 XML 配置实现这一点的方法:

在文档(http://grails.org/doc/latest/guide/spring.html#theBeanBuilderDSLExplained,使用 Spring 命名空间部分)中有一些关于如何在 BeanBuilder 中使用 Spring 命名空间的提示。例如,这有效地导入了 my.base.package 中的所有组件:

但我不知道如何context:exclude-element使用 BeanBuilder DSL 语法通过嵌套指定排除过滤器。我尝试了以下方法,但无济于事:

谁能指出我正确的方向?我还尝试将 xml 放入一个文件中,然后通过 导入它importBeans,这确实有效,但我真的很想直接使用 DSL 语法。

0 投票
2 回答
11488 浏览

java - 如何在spring中配置控制器而不在xml中进行组件扫描?

我必须使用 spring mvc 为银行设计一个非常大规模的项目。我已经选择使用 XML 配置。我关心的是限制服务器的启动时间。将有大约 2000 个控制器。

我已经使用组件扫描来扫描@Controller. 它工作得很好。但是,问题是当我从 XML 中删除组件扫描并在 XML 中使用 bean 配置手动添加控制器 bean 时,它没有在 IOC 容器中创建控制器实例。并给我 404 not found 错误。那么如何在没有 XML 组件扫描的情况下配置控制器。

以下是我的代码示例。有什么帮助吗?

servlet-context.xml

根上下文.xml

ContactSetupController.java

ContactSetupDao.java