使用spring的@autowired注解,无法实例化dao

    首先理解spring的注解注入dao接口的目的是什么,是为了接口不用进行实例化就可以被任何一个类去调用

    我昨天下午就是发现,不同的类,一模一样的注解,为什么前面的类可以使用注解调用mapper的sql查询,但是

    第二个类死活无法执行注解进行sql查询,写一段代码,大家可能更清楚一些。

    如果有两个类A和B   

public class A {
  @Autowired
  private IBankDao bankDao;
  public void getdata(){
  String str = null;
  //下面这一行调用接口是执行的
  str = bankDao.getdate("03003","15000000");
  }

}

public class B {
  @Autowired
  private IBankDao bankDao;
  public void getdata(){
  String str = null;
  //下面这一行调用接口是执行的
  str = bankDao.getdate("03003","15000000");
  }
}

  那么A类和B类都是可以调用Dao层执行mapper里面的sql语句的,但是我遇到的问题是B类嵌入A类当中

代码如下

public class A {
  @Autowired
  private IBankDao bankDao;
  public void getdata(){
  String str = null;
  //下面这一行调用接口是执行的
  str = bankDao.getdate("03003","15000000");
  B b = new B();
  //使用New之后,B类的注解就不起作用了
  b.getdata();
  }
}

  此时B中的Dao层失效了,我还尝试了不使用New方法,直接使用B类调用自己的方法,但是B类要调用自己的方法,

  那么方法必须是静态的。代码如下

public class A {
  @Autowired
  private IBankDao bankDao;
  public void getdata(){
  String str = null;
  //下面这一行调用接口是执行的
  str = bankDao.getdate("03003","15000000");
  //使用B类调用方法注解还是不起作用
  B.getdata();
  }
}

public class B {
  @Autowired
  private static IBankDao bankDao;//连这个都必须变成静态了,因为上面的A类中使用B类调用自己的方法,B的getdate()方法变成静态了,

  那么private IBankDao bankDao 也必须变成静态的了 ,所以就不起作用了。

  public static void getdata(){
  String str = null;
  //下面这一行调用接口是执行的
  str = bankDao.getdate("03003","15000000");
  }
}

  看重点,大家可能已经明白了,就是有注解的类,不能new,也不能有静态方法调用dao层,正确的是下面的代码,A类和B类都可以调用dao层

public class A {
  @Resource(name = "b")
  private B b;
  @Autowired
  private IBankDao bankDao;
  public void getdata(){
  String str = null;
  str = bankDao.getdate("03003","15000000");
  b.getdata();
  }
}

@Service
public class B {
  @Autowired
  private IBankDao bankDao;
  public void getdata(){
  String str = null;
  str = bankDao.getdate("03003","15000000");
  }
}

转载于:https://www.cnblogs.com/cyb-652356/p/10683188.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大括号之谜:C++的列表初始化语法解析

转载: https://segmentfault.com/a/1190000039362151 摘要:有朋友在使用std::array时发现一个奇怪的问题:当元素类型是复合类型时,编译通不过。 有朋友在使用std::array时发现一个奇怪的问题:当元素类型是复合类型时&a…

在Mono 2.8上部署ASP.NET MVC 2

Mono 2.8发布:C#4.0和更好的性能,我们知道Mono 2.8对ASP.NET MVC 2的完全支持,下面我们就来测试下在Mono 2.8上部署ASP.NET MVC 2应用程序。我的环境是Opensuse 11.3,通过以下命令部署好Mono 2.8的开发环境,之所以说是开发环境是同…

ASP.NET C# 数字格式化输出

int a 12345678; //格式为sring输出 Label1.Text string.Format("asdfadsf{0}adsfasdf",a); Label2.Text "asdfadsf"a.ToString()"adsfasdf"; Label1.Text string.Format("asdfadsf{0:C}adsfasdf",a);//asdfadsf¥1,234…

gdb调试时,Program received signal SIGPIPE, Broken pipe.

今天在gdb调试时,发现总是出现Program received signal SIGPIPE, Broken pipe,搜索了网上的资料,发现是在调试时,接收到了SIGPIPE这个signal信号导致调试被中断。 By default, gdb captures SIGPIPE of a process and pauses it.…

看到一个暴强的翻译,闲的蛋疼,写个c#版的

在豆瓣上看到一篇关于拿破仑的翻译,文科生的翻译有几段相当传神,不得不佩服汉语的强大。有好事者还用程序语言实现了一下,现已有java、python和html的版本,我也来写个渺小的C#版本,运行结果和java版是一致的&#xff0…

太多的想法,反而不是什么好兆头

太多的想法,反而不是什么好兆头,思绪太多,反而影响专心做另外一件事情!转载于:https://blog.51cto.com/newsnews/1113359

电销会员分销

AI(人工智能)机器人:真人语音智能流畅对话,支持打断,自动录音。自动按意向分A B C D 类。代替电销人员打电话,减少80%的重复劳动!低成本,高效率。 web部分,对接机器人,机器人智能语言交互。对一些做电销的企业来讲节省…

raft协议中统计一条log被多少节点复制

在raft协议中,client的请求都会转化为一条log,并且只能由leader才能处理来自client的请求,如果一个log请求到了follower上,最后也会重定向到leader上的。 好的,废话说多了,开始主题:raft协议中…

[笔记][原创]Verilog HDL语法分析笔记

这篇帖子用于记录学习Verilog过程中的一些syntax的问题,会不断更新,有不正确的地方请各位帮忙指正:D一.Verilog 语法中的可综合性Verilog HDL 真的很强大,如果程序只用于仿真,那么几乎所有的语法和编程语句都可以使用。但如果程序…

SRV记录注册不成功的可能的原因

1.1.1 SRV记录注册不成功的可能的原因 默认情况,安装完活动目录就会DNS中的SRV记录就注册成功了,如果您在域控制器上重启Netlogon服务,有可能还是不能注册SRV记录到DNS服务器上,以下是总结的需要检查的几点。 DNS区域名字是否正确…

cast()函数

cast()函数用于将某种数据类型的表达式显式转换为另一种数据类型。 CAST()函数的参数是一个表达式,它包括用as关键字分隔的源值和目标数据类型。 语法:CAST (expression AS data_type) expression:任何有效的SQL Server表达式。 AS&#x…

组建内存双通道的条件

双通道要分以下两种情况: 1.对称双通道:这是最传统的双通道模式,需要尽量完全相同的成对内存组建,性能为双通道中最强,要求也最苛刻,即使不能保证内存完全相同也至少应该保证容量、速度、延时、版型相同&am…

ABAP很厉害是怎么一种体验?

知乎上偶然看到这个问题,觉得很有意思,我也来回答一发。 我本科和研究生学的是计算机专业,做项目用C/C,研究生三年项目的代码量大概在三到四万行左右。2007年大学毕业加入SAP成都研究院一直工作到现在,工作中用的最熟练…

vector内存扩容

vector底层实现的机制是一个动态数组,当其占用的内存不足时,就会自动分配时原来内存大小2倍的空间,并将原来内存中的数据拷贝到新开辟的内存中。vector扩容时,并不是在原有内存的基础上再分配一块内存,而是在其他的地方…

C语言:为什么用fprintf(stderr,Error);比printf(Error);更好?

C语言:为什么用fprintf(stderr,"Error");比printf("Error");更好?_百度知道C语言:为什么用fprintf(stderr,"Error");比printf("Error");更好?2009-05-27 17:03 提问者: Wave_Dan |浏览次数:2855次请问:当文件…

w3m 使用总结

安装 sudo apt install w3m终端 w3m www.baidu.com 即可打开w3m是个开放源代码的命令行下面的网页浏览器。一般的linux系统都会自带这个工具,可以通过它在命令行下面浏览网页。本文介绍这个工具的使用方法。 [功能] w3m是个开放源代码的命令行下面的网页浏览器。 它…

set_error_handler自定义错误处理

刚看到了App.class.php,里面有个自定义错误的函数appError 刚还在怀疑。咋这么多参数,虽然看起来都是有用的,不过有些头晕。 继续往下看,看到了init()里的第一句话set_error_handler(array(&$this,”appError”)); 于是好好搜…

vector查找、插入、删除时效率对比

vector底层实现的机制时动态数组,因此适用于查找比较频繁的场景。那么在vector的中push_back()一个元素时或者在尾部删除一个元素时,效率是不是就高? 结果:不是。无论在任何位置插入或者删除元素时,都会进行内存的分配…

jquery如何获取checkbox的值

jquery如何获取checkbox的值 一、总结 一句话总结:就是通过jquery获取哪些对应name的checkbox,然后找出:check(被选中的),然后通过jquery的each遍历获取这些的值即可 $(input[namecheckboxName]:checked).each遍历取值…

Linux文件查找命令find,xargs详述

Linux文件查找命令find,xargs详述 总结:zhy2111314来自:LinuxSir.Org整理:北南南北摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解&#xf…