java注解 inject_@Inject注解不生效

最近在写jfinal整合netty的模块,但同时需要借助jfinal本身作为web容器,方便读取数据库等;但现在通过反射实例化Controller对象时,@Inject注解不生效,无法注入Service对象。@SocketModule(module = ModuleId.USER)

public class UserHandler extends Controller {

@Inject

private UserService userService;

@SocketCommand(cmd = UserCmd.LOGIN)

public void login(Session session, byte[] data) {

String params = new String(data);

JSONObject reqObj = JSON.parseObject(params);

return Kv.by(CommonConsts.MSG, "success").set(CommonConsts.DATA, userService.findAll());

}

}public Object invoke(Object... paramValues) {

try {

return method.invoke(target.newInstance(), paramValues);

} catch (IllegalAccessException | InstantiationException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

return null;

}

大概知道问题在哪里了?第一,action注参对象类型只能是java bean或model;第二,@Inject注入,需要通过http请求来初始化,所以我现在使用反射clazz.newinstance无法注入。

功能需求主要是:借用jfinal的controller机制实现注入service,并且通过不同的函数划分tcp模块;之前是用spring实现的,这次想改用jfinal实现,发现并没有spring方便。实在不行就使用springboot算了。

---------------------------

问题已解决,第一,java bean需要默认无参构造,及get set方法;第二,手动注入inject即可Controller controller  = (Controller) target.newInstance();

com.jfinal.aop.Aop.inject(controller);

return method.invoke(controller, paramValues);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值