如果所有类不在同一个包中,Spring @autowired 不起作用

2024-05-09

我有四个包裹:

  1. com.spring.org

    Files: HomeController.java

  2. com.spring.org.dao

    Files: SubscriberDao.java , SubscriberDaoImpl.java

  3. com.spring.org.model

    Files: Subscriber.java

  4. com.spring.org.service

    Files: SubscriberService.java , SubscriberServiceImpl.java

我将所有控制器类放入com.spring.org包和其他包根据其类型位于不同的包中。如果我运行我的应用程序,我会收到此错误消息:

HTTP 状态 500 - Servlet appServlet 的 Servlet.init() 引发异常 没有找到 [com.spring.org.service.SubscriberService] 类型的合格 bean 进行依赖项:预计至少有 1 个有资格作为此依赖项的自动装配候选者的 bean...

仅供参考:我在控制器中使用自动装配注释,如下所示:

@Autowired
private SubscriberService subService;

但是如果我把所有的类和接口放入com.spring.org包然后我的应用程序完美运行。

我尝试在 servlet-context.xml 文件中使用这些标签来解决问题,但仍然不起作用:

<annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.spring.org.**" />
<context:component-scan base-package="com.spring.org.dao" />
<context:component-scan base-package="com.spring.org.model" />
<context:component-scan base-package="com.spring.org.service" />

我也只尝试过这个:

<context:component-scan base-package="com.spring.org" />

您可以在此处查看我的 servlet-context.xml 文件的代码http://postimg.org/image/s6bnjccrn/ http://postimg.org/image/s6bnjccrn/

你能告诉我如何解决这个问题吗?

如果您需要查看任何其他文件,请告诉我。

Update

我的 SubscriberService 代码:

@Service
public interface SubscriberService {

 public void addSubscriber(Subscriber subscriber);
 public void updateSubscriber(Subscriber subscriber);
 public Subscriber getSubscriberById(int subId);
 public List<Subscriber> listSubs();
 public int removeSubscriber(int subId);    

}

根本原因

org.springframework.beans.factory.BeanCreationException:创建名称为“homeController”的bean时出错:自动装配依赖项注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException: 无法自动装配字段: private com.spring.service.SubscriberService com.spring.org.HomeController.subService;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到依赖项 [com.spring.service.SubscriberService] 类型的合格 bean:预计至少有 1 个有资格作为此依赖项的自动装配候选者的 bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=)} org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)

Files

如果我将所有代码粘贴到这里,将很难理解,所以我在这里上传了整个项目https://www.mediafire.com/?crxe7vt7uwyqwtl https://www.mediafire.com/?crxe7vt7uwyqwtl。我正在使用 Eclipse IDE。


你的结构应该是这样的

订户服务接口

package com.spring.org.service;

public interface SubscriberService {

}

SubscriberServiceImpl.java

package com.spring.org.service;

@Component
@Qualifier("Subscriber")
public class SubscriberServiceImpl implements SubscriberService {

}

“SubscriberServiceImpl1”是一个组件,它实现“SubscriberService”。

SubscriberServiceImpl1.java

package com.spring.org.service;

@Component
@Qualifier("Subscriber1")
public class SubscriberServiceImpl1 implements SubscriberService {

}

我设置了一个 Spring 上下文来扫描这两个包中标有“@Component”的 bean。

servlet-context.xml

<annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.spring"/>

HomeController.java

@Controller
public class HomeController {

    @Autowired
    @Qualifier("Subscriber")
    private SubscriberService subService;

}

从这里参考link http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/。 希望对你有帮助....

EDIT

根据你的包结构订阅者服务实现类在包下com.spring.org.service只需更改您的基础包即可com.spring这对你有用

<context:component-scan base-package="com.spring"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果所有类不在同一个包中,Spring @autowired 不起作用 的相关文章

  • 运行单个 Java 线程的双核 CPU 利用率[重复]

    这个问题在这里已经有答案了 可能的重复 多线程 Java 应用程序能否很好地利用多核机器 https stackoverflow com questions 1649402 would a multithreaded java applic
  • 如何显示/隐藏jsf组件

    在我的一个 JSF 应用程序中 顶部的标题部分包含 selectOneMenu 底部的内容部分显示过滤器组件 默认情况下 应用程序首先在顶部显示 selectOneMenu 数据 在底部显示相应的 Filter 信息 如果用户选择不同的se
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通
  • FXML 文件中的 getHostServices().showDocument()

    有没有简单的方法可以将 getHostServices showDocument 命令放入 toHomepage 方法中 而不是执行一行又一行的代码 这样代码应该看起来干净简单 package sample import javafx ap
  • Android 反向地理编码不适用于华为设备

    我正在尝试通过这段代码反转地理编码纬度 经度 Geocoder geocoder new Geocoder context Locale ENGLISH try List
  • Java检测鼠标长按

    如果用户按下 JList 组件超过 3 秒 有什么方法可以捕获事件吗 我发现困难的部分是即使在用户松开鼠标左键之前也需要触发事件 这可以通过 mousePressed 和 mouseReleased 组合轻松完成 您可以在 mouseDow
  • 在 JavaFX 中更改 ListView 字体大小

    我想知道如何更改 JavaFx 中的列表视图项目文本字体大小 每行文本的大小会有所不同 我尝试使用细胞因子属性 但我不知道如何使用它 有人可以帮我吗 类似的问题在这里 如何更改JavaFX中ListView的字体大小 https stack
  • 有界通配符相关的编译器错误

    我想知道这段代码有什么问题 Map 但我试图说得更具体 这个问题在这个旧的 Apache 线程 ht
  • 读取不失真的灰度 PNG 图像文件

    我需要读取和处理大量的灰度 PNG 文件 我的意思是 如果它们在 Photoshop 或 GIMP 中打开 则图像模式为灰度 而不是具有灰度值的 RGB 图像 ImageIO 似乎没有实现这一点 它似乎将所有图像文件视为 sRGB 这会破坏
  • Elasticsearch NodeBuilder 与 TransportClient

    对于其他 Elasticsearch 开发人员来说 这可能是一个非常简单 而且愚蠢 的问题 这两者之间有什么区别 我正在从 Java Web 应用程序连接到远程 Elasticsearch 服务器 到目前为止我一直在使用 Transport
  • 将 XML 从网站解析到 Android 设备

    我正在启动一个 Android 应用程序 它将解析来自网络的 XML 我创建了一些 Android 应用程序 但它们从未涉及解析 XML 我想知道是否有人对最佳方法有任何建议 这是一个例子 try URL url new URL your
  • 将字符串转换为字符并按降序排序(ascii)

    我正在创建一个程序 该程序将使用户输入整数 一个接一个 存储在数组中并按降序显示整数 该程序还要求用户输入一个字符串 使用以下命令将其转换为字符string toCharArray 我已经正确地按降序显示整数 问题是我不知道如何按降序显示字
  • Visual Studio Code - Java 类路径不完整。只会报告语法错误

    在使用 python 获得了丰富的经验之后 我正在使用 java 迈出第一步 我正在运行的脚本是一个简单的 Java Swing Gui 它可以从命令行和 VS Code 中正常编译和运行 为了设置 java 调试环境 我使用 github
  • 使用 InputStream 通过 TCP 套接字接收多个图像

    每次我从相机捕获图像时 我试图将多个图像自动从我的 Android 手机一张一张地发送到服务器 PC 问题是read 函数仅在第一次时阻塞 因此 从技术上讲 只有一张图像被接收并完美显示 但在那之后当is read 回报 1 该功能不阻塞
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • HQL 类似运算符,用于不区分大小写的搜索

    我正在使用 Jquery 实现自动完成功能 当我输入名称时 它会从数据库中获取记录 数据库中存储的记录是大写字母和小写字母的混合 我编写了一个 HQL 查询 它可以区分大小写地获取记录 但我需要不考虑大小写的记录 这是查询 List
  • 如何从 jenkins 的现有项目生成 .hpi 插件

    我正在尝试使用 jenkins 的性能插件 但最新版本存在一些问题 如链接中所述 https issues jenkins ci org browse JENKINS 27100 https issues jenkins ci org br
  • JSTL - c:url 不适用于表单操作

    我在使用标签在 JSP 中设置表单路径时遇到问题 我也把它放在表单标签之外 效果很好 然而 它似乎不适用于 spring 表单标签 我做错了什么或者它在其他 JSTL 标签中不起作用吗 提前致谢 这是表单标签之外的版本打印的内容 这是正确的
  • 用 lambda 表达式替换匿名函数

    我在 Java 8 映射操作中传递一个函数 Intellij 告诉我它可以用 lambda 表达式替换 但我不知道如何在不创建中间对象结构的情况下做到这一点 这就是我所做的 List
  • 将 JSON 发送到 Spring MVC 控制器

    我正在尝试将 JSON 发送到 Spring MVC 控制器 在 Spring MVC 方面 一切都配置正确 下面是代码 但似乎没有运行

随机推荐

  • WPF 路径:如何在 XAML 中绘制它?

    我想创建一个带有非矩形标题的自定义 GroupBox 如下图所示 正如你所看到的 标题的内容必须是可参数化的 因此可以在xaml中输入图像 标题和背景 提前致谢 谢谢您的回答 实际上我想在自定义组框中使用这个设计 所以在你的答案中 如果我不
  • 测试中的模型 - Django 1.7 问题

    我正在尝试将我的项目移植为使用 Django 1 7 除了一件事之外 一切都很好 测试文件夹内的模型 Django 1 7 新迁移在内部运行 migrate 命令 在运行syncdb之前 这意味着如果模型未包含在迁移中 它将不会填充到数据库
  • 使用 Core Data Swift 对 TableView 和行进行分区

    我在 sqlite 中有两个表 代码由 XCode Generation 生成 class Event NSManagedObject NSManaged var startDate NSDate NSManaged var details
  • System.IO.Compression 和 ZipFile - 提取并覆盖

    我使用标准 VB NET 库来提取和压缩文件 它也可以工作 但是当我必须提取并且文件已经存在时 问题就出现了 我使用的代码 Imports Imports System IO Compression 崩溃时我调用的方法 ZipFile Ex
  • 去除iOS输入阴影

    在 iOS Safari 5 上 我必须遵循输入元素 顶部内部阴影 我想删除顶部阴影 错误 webkit appearance不保存 目前的风格是 input border radius 15px border 1px dashed BBB
  • 用户非超级管理员和大对象的 pg_dump

    我与非超级管理员的用户开始了导出数据库的长期职业生涯 但我发现了一个问题 在新版本的postgresql中只有超级管理员才能访问大对象 ERROR permission denied for large object 5141 没有办法做到
  • 正则表达式检查确切的字符串是否存在,包括#

    新问题正如 Asaph 在上一个问题中所建议的 正则表达式检查确切的字符串是否存在 https stackoverflow com questions 2824291 regex to check if exact string exist
  • 如何确保超类的子类方法的线程安全?

    我参加了一次面试 并被要求为以下要求设计一个课程 假设我有一个 A 类 它可以有任意数量的子类 即子类 类 A 有一个名为 doSomething 的方法 该方法是同步的 要求是 A 的所有子类都是强制性的重写 doSomething me
  • 使用java将数据从Neo4j导出到csv

    将数据从 Neo4j 导出到 CSV 的最佳方法是什么 我已使用链接中的 CSV 导入器将数据从 csv 导入到 neo4jhttps github com sroycode neo4j import https github com sr
  • /bootstrap/start.php 中的 Laravel 错误:\Illuminate\Foundation\Application 未找到

    因此 我在开发服务器上安装了 Laravel php5 5 3 标准安装 安装了 mcrypt 并收到以下错误消息 Fatal error Class Illuminate Foundation Application not found
  • 在 Laravel 视图中使用 CSS?

    我刚刚开始学习 Laravel 并且可以掌握控制器和路由的基础知识 我的操作系统是 Mac OS X Lion 它位于 MAMP 服务器上 我的routes php代码 Route get function return View make
  • ErrorT 已弃用,但 exceptT 不适合

    我有一个一元计算 在某些时候 由于单子模式匹配 它开始需要 MonadFail 约束 我的简单解决方法是使用以下命令运行它 fmap either error id runErrorT 然而哎呀 Deprecated Use Control
  • 如何在 Angularjs 中正确将 JSON 响应解析为 ng-repeat

    我希望能够使用ng repeat为了解析我在前端的响应 我在解析具有多个项目与单个项目的响应时遇到问题ng repeat list 我能够解析 但我必须创建 2 个不同的列表ng repeat在前端进行配置并添加一些丑陋的逻辑 以便在数组长
  • 查找“与我共享”文件夹 ID(驱动器 ID)和文件 - OneDrive、Microsoft Graph、Python

    我的客户与我共享了一些onedrive文件夹 其中包含5个文件 我想找到drive Id File Id 以便我可以使用python脚本下载 脚本参考 无法从内部文件夹 OneDrive Microsoft Graph Python 下载文
  • 条件顺序仅在 init AngularJS 上执行

    如何在视图初始化时仅运行 orderBy 过滤器一次 我不希望我的列表在运行时被重新排序 li li 使用 orderBy 作为控制器中的过滤器 app controller DemoCtrl scope filter function s
  • 在多面图中用 N 注释 x 轴

    我正在尝试生成一些按治疗条件和访问次数细分的数字结果的箱线图 每个框中的观察次数都放在图下方 并且也标记了访问次数 这里有一些虚假数据可以用来说明 我举了两个我尝试过但不太有效的例子 library ggplot2 library plyr
  • 我的 apk 文件在模拟器中的位置

    我在 eclipse android 中编写了一个小程序 现在我安装并运行我的程序 它是一个 apk 现在我想知道我的 apk 文件在哪里 我什至想将它 拉 到我的系统中 是否可以 如果是这样请帮助我 如果您只想将 apk 安装在手机或类似
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • Jinja2中获取请求参数

    如何检索请求参数a在 Jinja2 模板中 http foo bar a 1 我这个答案有点晚了 但其他解决方案并没有真正考虑到您对 Flask 的使用 事实上 您将 Flask 与 Jinja2 一起使用 这使得您的情况与其他框架有点不同
  • 如果所有类不在同一个包中,Spring @autowired 不起作用

    我有四个包裹 com spring org Files HomeController java com spring org dao Files SubscriberDao java SubscriberDaoImpl java com s