我尝试在此类中使用 Autowired,但变量配置始终为 null ...在其他类中 Autowired 有效。
这个项目是jhipster生成的,不知道有没有关系
@Component
@WebService(endpointInterface = "SignaturePortTypeV2")
public class Signature extends SpringBeanAutowiringSupport implements SignaturePortTypeV2 {
@Autowired
ConfigServiceBean config;
@Override
public ExecuteTokenCmdRespType executeTokenCmd(ExecuteTokenCmdReqType tokenCmdReq) throws ICPMException {
config.getValue(CommonConfigKey.COMPANY_IDENTIFIER);
return null
}
}
@Service
public class ConfigServiceBean implements ConfigServiceLocal {
@Autowired
private Environment env;
@SuppressWarnings("unchecked")
@Override
public <T> T getValue(ConfigKey configKey) {
switch (configKey.getType()) {
case STRING:
return (T) env.getProperty(configKey.getKey(), String.class, configKey.getDefaultValue());
case INT:
return (T) env.getProperty(configKey.getKey(), Integer.class, configKey.getDefaultValue());
case LONG:
return (T) env.getProperty(configKey.getKey(), Long.class, configKey.getDefaultValue());
case DOUBLE:
return (T) env.getProperty(configKey.getKey(), Double.class, configKey.getDefaultValue());
case BOOLEAN:
return (T) env.getProperty(configKey.getKey(), Boolean.class, configKey.getDefaultValue());
default:
throw new IllegalStateException("Type not expected: " + configKey.getType());
}
}
}
最佳答案
我看到一些奇怪的事情:
- 你说配置变量为空,但是它用@Autowired注释。它应该在 Spring Context Load 中失败,因为需要注入(inject)(@Autowired 默认情况下具有 required = true 属性)。所以第一个问题是:bean Signature 是否正在创建?可能是您的 @Configuration 注释类(或者您创建的 spring 上下文)正在查看另一个包。
- 方法executeTokenCmd 始终返回null。它只是从 env 中检索一个值,然后返回 null。这确实没有道理。这可能是您错误的原因吗?
如果您可以粘贴错误跟踪,将会有所帮助。
关于java - WebService 类中的 Spring Autowired 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54450017/