@Autowired 和 @Service 从控制器工作,但不从不同的包工作

2024-01-22

我需要帮助理解背后的概念@Autowired and @Service。我有一个 DAO 定义为@Service和控制器@Autowired一切看起来都很好,但是,我使用相同的@Autowired在不同的班级,那么它不起作用。

Example:

Service

@Service
public class MyService {
    private JdbcTemplate jdbcTemplate;

    @Autowired
    public void setDataSource (DataSource myDataSource) {
        this.jdbcTemplate = new JdbcTemplate(myDataSource);
    } 

    public void testUpdate(){
            jdbcTemplate.update("some query");
    }
}

控制器

package com.springtest.mywork.controller;

@Controller
@RequestMapping(value = "/test.html")
public class MyController
{
  @Autowired
  MyService myService;

  @RequestMapping(method = RequestMethod.GET)
  public String test(Model model)
  {
    systemsService.testUpdate();
    return "view/test";
  }
}

以上一切都工作正常。但是,如果我想使用MyService在 POJO 中那就行不通了。例子:

package com.springtest.mywork.pojos;
public class MyPojo {

    @Autowired
    MyService myService;

    public void testFromPojo () {
        myService.someDataAccessMethod(); //myService is still null
    }
}

弹簧配置:

<beans>
    <mvc:annotation-driven />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <context:component-scan base-package="com.springtest.mywork" />
    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb" />
        <property name="username" value="hello" />
        <property name="password" value="what" />
    </bean>

    <bean name="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
        <constructor-arg ref="dataSource"/>
    </bean>
 </beans>

这是因为你的 POJO 类不是由 spring 容器管理的。

@Autowire注释仅适用于由 spring 管理的那些对象(即由 spring 容器创建的)。

在您的情况下,服务和控制器对象由 spring 管理,但您的 POJO 类不是由 spring 管理,这就是为什么@Autowire没有产生您期望的行为。

我注意到的另一个问题是,你正在使用@Service当spring有的时候DAO层的注解@Repository为此目的专门创建的注释。

另外,也不希望允许 spring 管理 POJO 类,因为通常它是必须在容器外部创建的数据存储元素。

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

@Autowired 和 @Service 从控制器工作,但不从不同的包工作 的相关文章

  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • 配置“DataSource”以使用 SSL/TLS 加密连接到 Digital Ocean 上的托管 Postgres 服务器

    我正在尝试托管数据库服务 https www digitalocean com products managed databases on 数字海洋网 https en wikipedia org wiki DigitalOcean 创建了
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • apt-get 在公司代理后面的 docker 中

    我正在尝试使用 Docker 在企业代理服务器后面设置一个开发环境 尽我所能 我无法让 docker 容器与代理服务器通信 代理服务器和 apt get 在主机 Ubuntu 12 04 上工作正常 Dockerfile 中完成的第一件事是
  • “分组依据”代理模型

    我有理论上无限深度的树模型和一些属性 组 除了标准视图之外 我还需要以这样的方式显示此模型 并保持同步 即每个组都成为具有相同属性值的所有项目的虚拟父级 使用 Qt 的模型 视图架构实现此目的的最佳方法是什么 不久前 我通过在模型中添加 删
  • PHP邮件功能不以html格式发送

    在 PHP 中 我尝试以 HTML 格式发送电子邮件 到目前为止我有这个 subject Password Reminder message Your password is b password b br br br br me mess
  • 单击 ng-grid/ui-grid celltemplate 会导致选择行。

    当我将 celltemplate 用于 ahref 链接时 一旦单击链接 行就会突出显示 因为我启用了 RowSelection 但我不希望在单击链接时突出 显示该行 仅当在除链接之外的任何位置单击该行时 另外 在下面的示例图片中 如何删除
  • windows 8 xaml 内联超链接

    如何在 XAML 中的 Windows 应用商店应用中创建格式正确的超链接 我尝试创建一个内联超链接 并希望使用静态资源对其进行样式设置
  • Checkstyle:尾随空格正则表达式问题

    我正在将 Checkstyle 添加到我的项目中 但检测空格的规则不够好 RegexpSingleline lt S s 它检测尾随空格并仅忽略带有空格的行 它应该允许缩进的空白行 它在大多数情况下工作正常 但它抱怨使用空行的 javado
  • 适用于多种设备的演示技术

    我们的应用程序应该为多种设备提供服务 从简单的智能手机 iPhone 触摸屏到普通浏览器 应用程序是分层的 因此我们可以重用业务层和持久层 然而 我们也想对单个表示层进行编程 例如 我知道 ASP NET 根据浏览器类型生成不同的 html
  • 在 Mac (OS High Sierra) 上安装 Flask-mysqldb (python 3) 时出错

    在按照在线教程创建 Flask Web 应用程序时 我尝试使用以下命令安装 Flask mysqldbsudo pip3 install flask mysqldb 这会导致安装错误 该错误似乎源于依赖性问题 错误信息如下Command u
  • 如何在Python中根据椭圆的一般方程绘制椭圆

    我知道matplotlib可以根据椭圆的中心 半长轴长度 半短轴长度以及x轴和长轴之间的角度来绘制椭圆 但是有没有简单的方法可以像Matlab一样根据椭圆的一般方程绘制椭圆 ezplot 3 x 2 2 x y 4 y 2 5 我找到了一种
  • 如何测试文件列表是否存在?

    我有一个列出文件名的文件 每个文件名都在自己的行上 我想测试每个文件名是否存在于特定目录中 例如 文件的一些示例行可能是 mshta dll foobar dll somethingelse dll 我感兴趣的目录是X Windows Sy
  • 在 Azure 角色中使用 SmtpClient 时出现“不支持请求的功能”异常

    在 Azure Web 或辅助角色中使用 SmtpClient 时出现异常 我创建了一个控制台应用程序 通过 RDP 在角色虚拟机上手动运行以进行重现 using System using System Net using System N
  • 使用节点和角度应用程序刷新页面时获取 404 页面

    我是新来的Angular 我尝试使用创建 CRUD 操作Nodejs and Angular 我在用Nodejs and Express对于支持和Angular对于前端 当我使用 routerLink 在页面上导航时 它工作正常 但是当我在
  • 具有递归可变参数函数的字符串流?

    我希望能够使用 ostringstream 将多个不同的参数组合成一个字符串 这样我就可以记录生成的单个字符串 而不会出现任何随机问题 我到目前为止 template
  • OAuth 2.0 - 客户端秘密是否必须是“秘密”?

    我只是好奇 我需要保留客户端秘密来自 Google FaceBook 其他 OAuth 2 0 提供商的 秘密 地方 据我所知 一旦我指定了非常严格的回调网址 就可以使用客户端秘密参数完成很少的事情 例如 将 秘密 密钥提交到 github
  • 从 jck 密钥存储导出密钥

    我们有一个包含秘密密钥的 jck 密钥库 jceks 格式 它是使用 keytool 命令生成的 keytool genseckey alias mykey keyalg AES keysize 256 storetype jceks ke
  • django - HttpRequest 对象没有属性“会话”

    我似乎无法让会话正常工作 Django 抱怨 HttpRequest 对象没有名为 session 的属性 在文档中明确指出 如果您启用了中间件 并且在安装的应用程序中启用了 django contrib sessions 那么您就可以开始
  • RPG对话引擎/结构[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直对 RPG 角色扮演游戏 中涉及的数据结构感兴趣 我特别对对话和基于事件的行动感到好奇 例如 如果我在某个时刻接近 NPCx在游
  • Shiny DT::renderDataTable 的“全选”复选框

    我想要一个复选框 用于选择 Shiny 中标准 DT renderDataTable 中显示的所有行 显示是关键 因为您应用的过滤器和整个数据表之间存在差异 是否有任何 DT 扩展可以做到这一点 我的编码技能很基础 因此我无法编写等效的 J
  • libgdx 中的多色文本

    我发现夜间构建中的 LibGDX 中有一个新组件 TextArea这是scene2d ui包裹 拥有这样的组件真是太好了 非常易于使用 但我缺少的是对多色文本的一些支持 我想用不同的颜色突出显示文本中的一些关键字 但我不知道如何使用当前的
  • @Autowired 和 @Service 从控制器工作,但不从不同的包工作

    我需要帮助理解背后的概念 Autowired and Service 我有一个 DAO 定义为 Service和控制器 Autowired一切看起来都很好 但是 我使用相同的 Autowired在不同的班级 那么它不起作用 Example