详解Spring关于@Resource注入为null解决办法
初学spring,我在dao层初始化c3p0的时候,使用@Resource注解新建对象是发现注入为null,告诉我 java.lang.NullPointerException。
@Repository public class UserDaoImpl implements UserDao { @Resource ComboPooledDataSource dataSource;
反复检查了配置文件,没有发现任何问题,最后在同学的帮助下终于发现了问题的所在,特记录于此,一个教训。
问题就出在我的service层,我在service层new了一个dao被@Repository注解的类的对象:
@Service public class UserServiceImpl implements UserService { @Override public int regUser(User user) { UserDao userDao = new UserDaoImpl();
这样new出来的被@Repository注的类解对象是不能被spring注入的。解决办法如下:
同样使用@Resource注解的方式创建UserDao对象:
@Service public class UserServiceImpl implements UserService { @Resource UserDao userDao; @Override public int regUser(User user) { }
问题解决
总结问题:
被Spring的注解注解过类的对象不能new,要用注解的方式创建对象
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Spring 中 @Service 和 @Resource 注解的区别
Spring 中 @Service 和 @Resource 注解的区别 1 前言 在咱们使用 spring 框架的时候,注解是"不可或缺"的一部分,她帮我们脱离了配置繁琐的 XML 文件的工作,但有一点却需要我们自己去把握,那就是"3何",即"何时何地用何注解?"在本篇博文中,作者就简单介绍一下如何恰当的使用 @Service 和 @Resource 这两个注解. 2 注解 2.1 @Service 当咱们需要定义某个类为一个 bean 的时候,
-
详解Spring注解--@Autowired、@Resource和@Service
什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低 2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率 为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java
-
Spring框架中 @Autowired 和 @Resource 注解的区别
Spring框架中 @Autowired 和 @Resource 注解的区别 在 spring 框架中,除了使用其特有的注解外,使用基于 JSR-250 的注解,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释. 首先,咱们简单了解 @PostConstruct 和 @PreDestroy 注释: 为了定义一个 bean 的安装和卸载,我们可以使用 init-method 和 destroy-method 参数简单的声明一下 ,其中 init-meth
-
详解Spring关于@Resource注入为null解决办法
初学spring,我在dao层初始化c3p0的时候,使用@Resource注解新建对象是发现注入为null,告诉我 java.lang.NullPointerException. @Repository public class UserDaoImpl implements UserDao { @Resource ComboPooledDataSource dataSource; 反复检查了配置文件,没有发现任何问题,最后在同学的帮助下终于发现了问题的所在,特记录于此,一个教训. 问题就出在我的
-
详解Spring Cache使用Redisson分布式锁解决缓存击穿问题
目录 1 什么是缓存击穿 2 为什么要使用分布式锁 3 什么是Redisson 4 Spring Boot集成Redisson 4.1 添加maven依赖 4.2 配置yml 4.3 配置RedissonConfig 5 使用Redisson的分布式锁解决缓存击穿 1 什么是缓存击穿 一份热点数据,它的访问量非常大.在其缓存失效的瞬间,大量请求直达存储层,导致服务崩溃. 2 为什么要使用分布式锁 在项目中,当共享资源出现竞争情况的时候,为了防止出现并发问题,我们一般会采用锁机制来控制.在单机环境
-
详解php中curl返回false的解决办法
首先来看一个封装的curl函数 function request_post($url = '', $param = '') { if (empty($url) || empty($param)) { return false; } $postUrl = $url; $curlPost = $param; $curl = curl_init();//初始化curl curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页 curl_setopt($curl
-
详解Spring 两种注入的方式(Set和构造)实例
依赖注入是指对象之间关系的控制权由应用代码中转到外部容器.Spring框架主要提供了Set注入和构造注入两种依赖注入方式. 1:Set注入指的就是在接受注入的类中定义一个要被注入的类型的一个set方法,并在参数中定义需要注入的元素.Set注入式一种装配Bean属性的直接方法,但Set注入的一个缺点就是它假设了所有的可变属性都可以通过set方法访问到,无法清晰地表示哪些属性是必须的,哪些属性是可选的. 2:构造注入是在接收注入的类中定义一个构造方法,并在构造方法中定义需要注入的参数.构造注入方式的
-
详解Spring中实现接口动态的解决方法
前言 本文主要给大家介绍的是关于Spring实现接口动态的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧. 关于这个问题是因为领导最近跟我提了一个需求,是有关于实现类Mybatis的@Select.@Insert注解的功能.其是基于interface层面,不存在任何的接口实现类.因而在实现的过程中,首先要解决的是如何动态实现接口的实例化.其次是如何将使接口根据注解实现相应的功能. 声明 解决方案是基于Mybatis源码,进行二次开发实现. 解决方法 我们先来看看Mybat
-
详解Spring Boot 2.0.2+Ajax解决跨域请求的问题
问题描述 后端域名为A.abc.com,前端域名为B.abc.com.浏览器在访问时,会出现跨域访问.浏览器对于javascript的同源策略的限制. HTTP请求时,请求本身会返回200,但是返回结果不会走success,并且会在浏览器console中提示: 已拦截跨源请求:同源策略禁止读取位于 https://www.baidu.com/ 的远程资源.(原因:CORS 头缺少 'Access-Control-Allow-Origin'). 解决方案 1.jsonp 2.引用A站的js 3.N
-
详解Struts2中json 相互引用死循环解决办法
方法1 :利用Struts 2的支持的可配置结果,可以达到过滤器的效果.Action的处理结果配置支持正则表达式. 但是如果返回的对象是一个数组格式的Json数据.比如peson Bean中有对象persion1-person9,而我只要person1的json数据, 则可以用如下的正则表达式. <struts> <constant name="struts.objectFactory" value="spring"/> <includ
-
详解Centos7中Nginx开机自启动的解决办法
关于在centos7中设置Nginx开机自启动,我们可以通过编写开机自启动shell脚本来解决. 测试环境 操作系统:centos7 64位 1611 Nginx版本: 1.11.10 本机Nginx安装时的配置参数 ./configure \ --prefix=/usr/local/nginx \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/v
-
详解Linux下出现permission denied的解决办法
Permission denied: 出现的原因的是:没有权限进行读.写.创建文件.删除文件等操作. 解决方法:输入命令 sudo chmod -R 777 /工作目录, 例如:sudo chmode -R 777 /home/HDD,此时就可以在该路径下进行一系列的操作. sudo:是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具. -R:是指几连医用到目录里所有子目录和文件: 777:是指所有用户都拥有的最高权限. 但是很不方便也不适合新手,简单
-
图文详解Vue3没有代码提示问题的解决办法
在上一篇笔记中提到了Vue3+vite+Ts写代码过程中,出现的代码自动补全失效功能,今天来谈谈如何解决这个问题. 首先,我们已经很明确的就是安装了volar插件之后,HTML标签片段补全已经失效,即在template中书写HTML标签时,不会再有代码补全,即输入“div”,就是“div”,而不再是“<div></div>”,为了解决这个问题,我们需要在不删除volar插件的同时,对Vscode做一些配置. 打开设置,进入到如下界面: 选择 文本编辑器 -> 文本 ->
随机推荐
- 浅谈oracle rac和分布式数据库的区别
- 献给写作者的 Markdown 新手指南
- Win2003系统安装SQL Sever2000后1433端口未开放的解释
- vue用addRoutes实现动态路由的示例
- php zend解密软件绿色版测试可用
- asp中让function同时返回多个值的代码
- 详解mac下通过docker搭建LEMP环境
- java实现选择排序算法
- Android Studio下载更新Android SDK网络异常或无法下载
- 献给迷茫中的初学者如何去学习编程
- jquery转盘抽奖功能实现
- Android 日期选择器实例代码
- php使用str_shuffle()函数生成随机字符串的方法分析
- Android实现红包雨动画效果
- Android中巧妙的实现缓存详解
- C#中的委托使用
- 计算机网络的概念和分类
- Android实现双向滑动特效的实例代码
- python脚本实现验证码识别
- 全面了解JavaScript的作用域链