spring mvc @autowired不起作用
2016-01-22 10:37
381 查看
注意检查点:
1.类上面是否加了@component和@controller注解,要想类中的autowired注解能够正常工作,类的创建必须由spring来掌管,即类必须是一个spring component。
2.注入的变量不能在声明中或者是构造函数中调用。
例如:
zkServer的值不能写在声明中:
private String zkServer = sysparaService.getPara(Parameter.ZK_LOCK_ADDRESS);
或者写在构造函数中:
public DistributedLockImpl(){
zkServer = sysparaService.getPara(Parameter.ZK_LOCK_ADDRESS);
}
1.类上面是否加了@component和@controller注解,要想类中的autowired注解能够正常工作,类的创建必须由spring来掌管,即类必须是一个spring component。
2.注入的变量不能在声明中或者是构造函数中调用。
例如:
package com.arcsoft.lecam.service.impl.lock; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.recipes.locks.InterProcessLock; import org.apache.curator.framework.recipes.locks.InterProcessMutex; import org.apache.curator.retry.RetryNTimes; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.arcsoft.lecam.constants.Constants; import com.arcsoft.lecam.constants.Parameter; import com.arcsoft.lecam.service.common.SysparaService; import com.arcsoft.lecam.service.lock.DistributedLock; import com.arcsoft.sumologic.common.LogContainer; import com.arcsoft.sumologic.common.SumoLogger; import com.arcsoft.sumologic.common.SumoLoggerThreadLocal; import com.google.common.base.Strings; @Component public class DistributedLockImpl implements DistributedLock{ @Autowired private SysparaService sysparaService; private String zkServer; private static CuratorFramework client; private static boolean isStarted = false; SumoLogger sumoLogger; public String getZkServer() { return zkServer; } public void setZkServer(String zkServer) { this.zkServer = zkServer; } public InterProcessLock getLock(String lockPath) { sumoLogger = (SumoLogger) SumoLoggerThreadLocal.get(); LogContainer logContainer = sumoLogger.createLogContainer(); if(!isStarted){ //不能在声明中或者是构造函数中调用,否则会出问题 // zkServer=sysparaService.getPara(Parameter.ZK_LOCK_ADDRESS); client = CuratorFrameworkFactory.newClient( zkServer, new RetryNTimes(10, 5000)); client.start(); isStarted = true; } logContainer.addPrameter("zookeeper client started ",Constants.ZK_ADDRESS); String path = lockPath.startsWith("/")? lockPath:"/"+lockPath; if(Strings.isNullOrEmpty(lockPath)) path = Constants.ZK_LOCK_PATH; return new InterProcessMutex(client, path); } }
zkServer的值不能写在声明中:
private String zkServer = sysparaService.getPara(Parameter.ZK_LOCK_ADDRESS);
或者写在构造函数中:
public DistributedLockImpl(){
zkServer = sysparaService.getPara(Parameter.ZK_LOCK_ADDRESS);
}
相关文章推荐
- spring MVC边用边用
- 使用Java jaxb处理bean生成xml中一些问题
- 基于Elasticsearch2.1.1的JavaAPI基本操作代码示例
- eclipse如何将中文版转换成英文版
- java 中assert的使用
- spring-mvc 详解
- java 解析 json 遍历未知key
- Java 包装类 自动装箱和拆箱
- java 对List进行物理分页
- Android Studio Java\jdk1.7.0_45\bin\java.exe'' finished with non-zero exit value 3
- Java 7之基础 - 强引用、弱引用、软引用、虚引用
- spring 嵌套事务
- springMVC注解前台像后台传值的两种方式
- Echarts-JAVA
- Java EE 相关基本概念
- 一种Java Web程序资源的优化方法
- Struts2+Spring+Hibernate 三大框架的合并集成
- java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp区别、联系和转换
- Java类与继承
- eclipse快捷键使用