今天遇到一个十分操蛋的问题,最后发现是因为忘记在对应的Service上加上@AutoWired。

难怪单元测试没问题,因为单元测试中用到的Service,其实现类通过DAO自动装配了。也就是在对应的spring-mybatis.xml配置了Bean。

而Controller,调用对应的业务Service需要手动加上@AutoWired注解实现装配。

那么什么是自动装配?

简单的说,将对象交给spring管理,那么spring是如何管理对象的呢?通过配置文件来管理。

比如自动装配有这么几种常用的方式?

第一种是@AutoWired注解,会自动将service名称注入到xml中,比如:

<bean id="testService" class="com.test.TestServiceImpl">
</bean>

但是这种方式虽然自动化,但是也有其局限性,就是在扫描service层时,不能存在相同的testService,否则会报错。

第二种是@Resource注解,该注解可以自动装配,也可以指定名称。

之所以指定名称,是防止出现重复的service注入导致报错。

这里说下@Autowired 与@Resource的区别:

(1)@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上;

(2)@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

@Autowired@Qualifier("testDao")
private TestDao testDao;

(3)@Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

通常一般为了减少因为装配的冲突,建议使用@Resource。

记一次关于SSM框架的使用错误相关推荐

  1. 使用maven搭建ssm框架的javaweb项目

    目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...

  2. Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念

    1.尚硅谷 视频课程:https://www.bilibili.com/read/cv5216534 初学者可按照尚硅谷公开的JAVA视频最快学习路线: JavaSE --> MySQL–> ...

  3. 基于SSM框架社交媒体实现

    本文由本人的本科毕业论文修改而来,并不是论文的完整篇幅,部分已进行修改或删除.注意,在参考时还请注意查重等其他因素,由此所产生的相关问题均与本人无关,概不负责. 目录 摘要 Abstract 第一章 ...

  4. 基于SSM框架的校园论坛设计与实现(MySQL、JSP)

    此文章记录了本人毕业设计的设计与实现过程,欢迎大家交流讨论. 目录 摘 要 第1章 绪 论 1.1 课题背景及研究的目的和意义 1.2 国内外研究现状 1.3 本文的主要研究内容 第2章 系统总体设计 ...

  5. java ssm小案例_简易的SSM框架整合小案例

    简易的SSM框架整合小案例 一.创建一个web工程的maven项目 1.项目名随便起 2.选择好你的maven路径,然后finish 二.配置pom.xml文件 org.springframework ...

  6. SSM框架个人学习汇总

    SSM框架汇总 什么是SSM框架 SSM是Spring.SpringMVC.Mybatis三种框架的首字母简写, SSM是目前Java Web开发的最普遍和最高效框架,并且依然在不断发展与完善. SS ...

  7. 【SSM】第一课 超市订单管理平台--SSM框架整合

    概念 在Java服务端开发中,Spring+SpringMVC+Mybatis搭建MVC三层架构完成项目的创建流程是开发者学习框架编程的必经之路,这里我们使用一个项目来完成整个的开发过程,后期会用一系 ...

  8. SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP. S ...

  9. 初学ssm框架的信息

    ssm框架,就是Spring ,SpringMVC ,mybstis 的简称,我们是从mybstis 开始学起的,mybatis的作用作为一个连接数据库的框架,可以很好配置连接好数据库, 有mybat ...

最新文章

  1. jquery submit()不能提交表单的解决方法
  2. 使用CFree调用Win32 LoadLibrary 简单示例
  3. mysql auto_increment 原理_[Mysql]mysql原理之Auto_increment
  4. sendmail邮件服务器的基本建立过程
  5. Django Bootstrap开发笔记01 - 添加简单网页
  6. 解决 SmallPDF 联网验证和试用期过期问题
  7. 面向机器学习的特征工程 一、引言
  8. nodejs服务端基本结构
  9. Java基础篇:如何解决成员的访问和继承?
  10. c# 多线程界面卡顿_C#多线程解决界面卡死问题的完美解决方案
  11. TextMate里添加Theme
  12. 我买的开发板——大虾网DX32(for STM32)
  13. 批发企业如何使用订单软件app管理账目混乱问题
  14. 阿里云短信服务的使用(创建,测试笔记)
  15. 计算机未安装flash,win10系统提示未安装Flash的解决方法
  16. WIN10 LTSC 转 WIN10 专业版(纯净)
  17. 解决在RHEL/CentOS7.4以上版本无法使用AFD(Oracle ASMFD)特性
  18. android沉浸式模式简书,Android-沉浸式模式
  19. 自动化软件测试工作内容,「自动化测试」自动化测试岗位职责(职位描述,任职要求)...
  20. java 列表伸缩,微服务实例自动弹性伸缩实践

热门文章

  1. python3入门到精通pdf-Python3入门到精通实战特训
  2. 免费学python的网站-学数据分析Python必备的8个免费学习网站
  3. python填写excel-Python玩转Excel的读写改实例
  4. linux关闭方防火墙的命令
  5. UVa661 Blowing Fuses
  6. LeetCode Plus One
  7. TypeScript之Https通信
  8. C语言的逻辑运算符以及优先级及标识符
  9. Python分页组件
  10. 算法学习——递推之猴子爬山