@Inject 注入 还是报空指针

 发布于 572天前  作者 子寒磊  1435 次浏览  复制  上一个帖子  下一个帖子
 标签: 无

@IocBean
@Service("userManagerService")
public class UserManagerServiceImpl implements UserManagerService{
@Inject private UserMastManagerBiz userMastManagerBiz;
public UserRegisterServiceResponseDTO addUser(
UserRegisterServiceRequestDTO requestDTO){
UserRegisterServiceResponseDTO responseDTO
= userMastManagerBiz.registerUserAccount(requestDTO);
return responseDTO;
}
}

结果 userMastManagerBiz 报空指针
20 回复

可能性:

在js里面配置这个bean

对象是手动new的

@wendal 你的意思是UserMastManagerBiz 是手动new的,不是注入的吗?

要看 UserManagerServiceImpl 是怎么生成的, 问题是出在UserManagerServiceImpl 上

  1. 检查ioc的js文件, 看看有无重复声明, 同一个bean, 要么用js,要么用注解, 只能有一种生效
  2. 要是这个类的对象是直接new出来的,那就肯定没有"注入"这一服务了.

@wendal /*
* 本配置文件声明了整个应用的数据库连接部分。
*/
var ioc = {

dataSource : {
type : "com.alibaba.druid.pool.DruidDataSource",
fields : {
driverClass : "oracle.jdbc.driver.OracleDriver",
jdbcUrl : "jdbc:oracle:thin:@:1521:orcl",
user : "",
password : ""
}
},
dao : {
type : "org.nutz.dao.impl.NutDao",
args : [ {
refer : "dataSource"
} ]
}

};

我在js中没有声明bean,全都是以注入方式写的

这是我的nutz日志:
ALL Nutz Log via Log4jLogAdapter
[INFO ] [2016/04/02 11:04:59] SEE org.nutz.log.Logs - Nutz is licensed under the Apache License, Version 2.0 .
Report bugs : https://github.com/nutzam/nutz/issues
[INFO ] [2016/04/02 11:04:59] SEE org.nutz.mvc.NutFilter - NutFilter[nutz] starting ...
[INFO ] [2016/04/02 11:05:02] SEE org.nutz.mvc.impl.NutLoading - Nutz Version : 1.b.51
[INFO ] [2016/04/02 11:05:02] SEE org.nutz.mvc.impl.NutLoading - Nutz.Mvc[nutz] is initializing ...
[INFO ] [2016/04/02 11:05:02] SEE org.nutz.ioc.loader.annotation.AnnotationIocLoader - Scan complete ! Found 13 classes in 1 base-packages!
beans = ["customerCodeBiz", "home", "baseDao", "userMastManagerBiz", "complexDatabase", "mongoDao", "simpleDababase", "memcached", "baseBiz", "commonMongoService", "errorMessageContent", "userManagerServiceImpl", "baseMongo"]
[INFO ] [2016/04/02 11:05:02] SEE org.nutz.mvc.impl.NutLoading - Build URL mapping by org.nutz.mvc.impl.UrlMappingImpl ...
[WARN ] [2016/04/02 11:05:02] SEE org.nutz.mvc.impl.NutLoading - None module classes found!!!
[WARN ] [2016/04/02 11:05:02] SEE org.nutz.mvc.impl.NutLoading - None @At found in any modules class!!
[INFO ] [2016/04/02 11:05:02] SEE org.nutz.mvc.impl.NutLoading - Setup application...
[INFO ] [2016/04/02 11:05:02] SEE org.nutz.mvc.impl.NutLoading - Nutz.Mvc[nutz] is up in 528ms

这里是生成了这个userManagerServiceImpl 这个对象吧

@ds25 只是生成了定义,对象还没生成.

使用UserManagerServiceImpl 的代码贴一下, 估计是new UserManagerServiceImpl ()的, 而非从ioc容器拿.

@wendal

@Controller
@RequestMapping("/home")
public class Home {

private Logger logger = Logger.getLogger(Home.class);

@Inject
private UserManagerServiceImpl userManagerService; /**
* 个人日记-注册页面
*
* @return
* @Description:
*/
@RequestMapping(value = "/{site}/register" , method = RequestMethod.GET)
public ModelAndView register(HttpServletRequest request,
HttpServletResponse response) {
logger.info("进入注册页 register START");
ModelAndView mav = new ModelAndView();
mav.setViewName("homePage/registerPage");
logger.info("进入注册页 register End");
return mav;
} /**
* 个人日记-正在注册
*
* @return
* @Description:
*/
@SuppressWarnings("unused")
@RequestMapping(value = "/{site}/registering" , method = RequestMethod.POST)
public ModelAndView registering(HttpServletRequest request,
@RequestParam("email") String email,
@RequestParam("username") String nickName,
@RequestParam("password") String password,
HttpServletResponse response) {
logger.info("正在注册 registering START");
ModelAndView mav = new ModelAndView();
mav.setViewName("homePage/registerPage"); email = email==null?"":email.trim();
nickName = nickName==null?"":nickName.trim();
password = password==null?"":password.trim(); UserRegisterServiceRequestDTO requestDTO = new UserRegisterServiceRequestDTO();
requestDTO.setEmail(email);
requestDTO.setNickName(nickName);
requestDTO.setPassword(password); if(requestDTO != null){
userManagerService.addUser(requestDTO);
mav.setViewName("redirect:/home/homePage/logining.do");
}else{
mav.addObject("errorTips", "您输入数据有误!");
request.getSession().setAttribute("information", null);
} logger.info("正在注册 registering End");
return mav;
} }

spring会认nutz的注解????

@Inject
private UserManagerServiceImpl userManagerService;

这个绝对不会生效, 通过下面的方式取

Mvcs.ctx().getDefaultIoc(UserManagerServiceImpl.class)

@wendal 直接用Mvcs.ctx().getDefaultIoc(UserManagerServiceImpl.class)将
@Inject
private UserManagerServiceImpl userManagerService; 替代吗?

恩,用的时候从nutz ioc取

ps,为啥不用spring 的ioc呢

@wendal

现在又出现一个问题:当我在类中直接使用
Mvcs.ctx().getDefaultIoc(UserManagerServiceImpl.class) 时,会出现
Multiple markers at this line
- Syntax error on token "ctx", Identifier expected after this
token
- Syntax error on token ".", { expected

请问这是什么原因?

@ds25 版本旧,改成 Mvcs.ctx.getDefaultIoc

@wendal

改成 Mvcs.ctx.getDefaultIoc(UserManagerServiceImpl.class);
会出现
Syntax error on token "getDefaultIoc", Identifier expected after this token

这也是版本问题吗

@ds25 啥版本?

我晕,getDefaultIoc().get(XXXXX.class);

@wendal

打扰你很久了,可是改成
Mvcs.ctx.getDefaultIoc.get(UserManagerServiceImpl.class);
还是报Syntax error on tokens, delete these tokens

我用的是nutz-1.b.51.jar

@ds25 getDefaultIoc().get(XXXX.class)

getDefaultIoc是个方法啊,返回Ioc接口,然后再取bean

@wendal

谢谢啦,麻烦你这么久,问题终于解决了。
学习nutz有段时间了,现在在做毕设,正在搭环境,不想用SSH,所以想用新学的nutz做一下,毕竟用SSH的同学太多了,也找个机会练练手,看看自己对nutz掌握的怎样了。
最后由衷说一声: 谢谢啦!!!!!

用的不是eclipse?应该有自动提示的

@wendal

是eclipse ,可能是我对nutz还不太熟吧,所以卡壳的地方比较多

@Inject 注入 还是报空指针的更多相关文章

  1. 160309、Spring AOP操作action时无法注入,报空指针错误

    今天帮同事看个问题,action注入失败,代码没问题,主要是stuts2权限移交的问题,特此记录一下 Spring AOP操作action时无法注入,报NullPointer异常 当使用Spring ...

  2. 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。

    Spring单例注入,单例对象可设置成Spring元件. 只有Spring的元件中@Autowired才有用,在普通类中@Autowired虽然不会编译报错,但运行时会报空指针错误.

  3. 【Spring】Service 注入失败,空指针

    service层的类都有用@Service标识,但报空指针,注入失败,很可能是因为spring的application配置和springmvc的配置文件配置错误,导致容器冲突了. spring和spr ...

  4. SpringJUnit4测试--测试无反应/控制台报空指针的解决---junit的jar冲突!

    前言: 前些日子碰到一个诡异的问题--用springJUnit进行测试,运行方法什么反应也没有,控制台 也没有输出,百度也没有答案--只好暂时作罢.今天我只好用上了排除法,建个测试小项目,将只要能测试 ...

  5. 遇到的Fragment中使用setAdapter()设置ListView报空指针解决方案

    场景是这样,底部4个tab导航栏.用的fragment. 但其中一个fragmentActivity1中使用ListVIew的setAdapter()方法时,总是报NullPointerExcepti ...

  6. getActionBar().setDisplayHomeAsUpEnabled(true)报空指针(已解决)

    今天捣鼓了一下午.getActionBar().setDisplayHomeAsUpEnabled(true)总是报空指针.在我的还有一个Android4.4.2的项目中就没有一点问题.我还以为是我自 ...

  7. idea的service注入mapper报错

    一.问题 idea的java项目中,service类中注入mapper报错 二.解决 方法1 在mapper类上加上  @Repository 注解即可,当然不加也行,程序也不回报错,是idea的误报 ...

  8. Spring AOP操作action时无法注入,报NullPointer异常

    Spring AOP操作action时无法注入,报NullPointer异常当使用Spring AOP对action层进行操作时,会出现注入失败的问题,出现空指针异常.原因是一般struts2+spr ...

  9. [sql 注入] insert 报错注入与延时盲注

    insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+--------- ...

随机推荐

  1. Go语言基础之14--Waitgroup和原子操作

    一.Waitgroup介绍 1.1 背景 package main import ( "fmt" "time" ) func main() { ch := ma ...

  2. UDP通讯模型简单示例

    1. UDP通讯模型 2. 服务器端 ① 创建一个socket,用函数socket() ② 绑定IP地址.端口等信息到socket上,用函数bind() ③ 循环接收数据,用函数recvfrom() ...

  3. java thread start到run:C++源码分析

    转:https://hunterzhao.io/post/2018/06/11/hotspot-explore-inside-java-thread-run/ 整体流程 java new Thread ...

  4. java——变量

    1.静态变量: 随着类的加载而生成并初始化 随着类的消失而消失 2.成员变量: 随对象的加载而生成并初始化 随对象被回收而消失 3.局部变量: 作用范围由{}决定 随方法调用而创建 随方法的执行完毕而 ...

  5. 01-消息中间件概述和ActiveMq入门

    1.mq解决的问题 系统异步处理 应用解耦 流量削峰 日志处理 消息通信 2.消息中间件的2中模型 2.1 Point-to-Point(P2P) / 点对点 / 类比:送快递 特点: + 一个消费生 ...

  6. java多线程(二)

    线程的阻塞状态: 参考java多线程(一)多线程的生命周期图解,多线程的五种状态.     1.1 join(),如果在A线程体里面执行了B线程的join()方法,那么A线程阻塞,直到B线程生命周期结 ...

  7. 性能测试工具LoadRunner13-LR之Virtual User Generator 创建java脚本以及小结

    Java vuser是自定义的java虚拟脚本,脚本中可以使用标准的java语言. 环境配置 1.安装jdk(注意:lr11最高支持1.6) 2.配置环境变量 3.在lr选择java Vuser协议 ...

  8. [转]如何在.NET MVC中使用jQuery并返回JSON数据

    本文转自:http://blog.sina.com.cn/s/blog_48e42dc90100xp1p.html 二.开始实践 - jQuery端 假设我们要从服务器端获取一个文章列表,并把文章条目 ...

  9. Keepalived & Lvs集群搭建实验

    实验拓扑图: 实验原理: Keepalived 是基于 LVS ,并与 LVS 高度融合的 LVS和keepalived的关系:lvs起的是负载均衡功能,而keepalived则是高可用(热 备)的支 ...

  10. 本机访问其它电脑上的oracle数据库

    最近发现很多人问到怎么才能访问别人机子上的oracle,这里来给大家做个示范 借助工具的话,oracle就自己带了两个配置和移值助手下面:net configuration assistant 和ne ...