当前位置:编程学习 > JAVA >>

求助!!!!Spring注入的类为null

@Component
public class SipServerIoHandler extends IoHandlerAdapter {
        ...................
        ...................
private FunctionService functionService;

public FunctionService getFunctionService() {
return functionService;
}

public void setFunctionService(FunctionService functionService) {
this.functionService = functionService;
}

        ...................
@Override
public void messageReceived(IoSession session, Object message) {
functionService.toString();
}
}
messageReceived()的方法是网络接到异步数据时触发的。这时候functionService是null
下面是我Action类使用方法,这时functionService不是null,请问这是怎么回事?我想让上面的functionService能够被Spring注入。


@Controller("projectAction")
@Scope("prototype")
public class CtrlAction extends BaseAction {
...........
..........

@Resource
private FunctionService functionService;

public void setFunctionService(FunctionService functionService) {
this.functionService = functionService;
}

public FunctionService getFunctionService() {
return functionService;
}

.............
.............

public String write() throws Exception {
if (StringUtils.isNotBlank(id) && StringUtils.isNotBlank(value)) {


List<Function> list = functionService.findAll(); 
for(Function f : list){
logger.info("测试按钮组对象名称:"+f.getFunctionName());
}
}
return SUCCESS
}
}
--------------------编程问答-------------------- 我使用的Struct2 + Spring3.0 + Hibernate3的网站框架开发。 --------------------编程问答-------------------- 你functionService上没加@Resource注解或@Autowired --------------------编程问答-------------------- 下面是我Action类使用方法,这时functionService不是null,请问这是怎么回事?我想让上面的functionService能够被Spring注入


public class SipServerIoHandler extends IoHandlerAdapter {
        ...................
        ...................
@Autowire
private FunctionService functionService;

public FunctionService getFunctionService() {
return functionService;
}

public void setFunctionService(FunctionService functionService) {
this.functionService = functionService;
}另外 不需要你的 FunctionService  的 set  get 方法 看来你SPRING AOP 还有待理解
--------------------编程问答-------------------- 楼上的大哥们,@Resource注解或@Autowired我加了之后还是不行。 --------------------编程问答-------------------- @Autowire和get set不是一样的效果么。。?这二者有什么区别? --------------------编程问答-------------------- LZ,实在不行,xml里面注入下试试!

--------------------编程问答-------------------- 暂时使用了其他方法解决了。functionService = this.listener.getFunctionService(); 可以引用过来listener 是SipServerClient声明 
这是SipServerIoHandler的构造函数
public SipServerIoHandler(SipServerClient listener, MessageProcessorFactory messageProcessorFactory)
 {
this.listener = listener;
this.messageProcessorFactory = messageProcessorFactory;
}

下面这是SipServerClient Init初始化
@Component
public class SipServerClient {

...........
..........

@Resource
private FunctionService functionService;


public FunctionService getFunctionService() {
return functionService;
}

public void setFunctionService(FunctionService functionService) {
this.functionService = functionService;
}
...........
..........

/**
 * init:初始化服务器客户端
 * 
 * @since ids1.0
 */
public void init(ServletContext servletContext) {
this.servletContext = servletContext;
connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(connectTimeoutMillis);
connector.setHandler(new SipServerIoHandler(this, messageProcessorFactory));
connector.getSessionConfig().setIdleTime(IdleStatus.READER_IDLE, idleInterval);
}
}
虽然找到问题的解决方法, 但是我还不明为什么不能直接Spring注入。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,