Java SpringApplication无法实例化bean
我是Spring&WebService新手,正在Spring.io上尝试一些指南。 我计划创建一个基本的RESTful Web服务,它使用Google Direction API并只返回状态 以下是课程: 资源Java SpringApplication无法实例化bean,java,spring,web-services,Java,Spring,Web Services,我是Spring&WebService新手,正在Spring.io上尝试一些指南。 我计划创建一个基本的RESTful Web服务,它使用Google Direction API并只返回状态 以下是课程: 资源 @JsonIgnoreProperties(ignoreUnknown=true) public class Direction { // getters & setters public Direction() { super();
@JsonIgnoreProperties(ignoreUnknown=true)
public class Direction {
// getters & setters
public Direction() {
super();
}
private String status;
public String toString() {
return status;
}
}
控制器
@Controller
public class Consumer {
public Consumer() {
super();
}
@Resource
private String url;
@Resource
private RestTemplate client;
@Resource
private String apiKey;
@RequestMapping(value = "/directions", method=RequestMethod.GET)
public @ResponseBody Direction consume(@RequestParam(value="source") String source, @RequestParam(value="destination") String destination) {
return consumeDirections(buildURI(source, destination));
}
// Builds URI
private String buildURI(...) {
...
}
private Direction consumeDirections(final String requestURI) {
return client.getForObject(requestURI, Direction.class);
}
}
配置v1
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Consumer.class, args);
}
}
Springconfig
Spring返回没有找到[java.lang.String]类型的合格bean作为依赖项。
这适用于Consumer中的所有bean
但是,这在配置v2中起作用
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
@Resource
private Consumer consumer;
public void execute() {
System.out.println(consumer.consume("x", "z"));
}
public static void main(String[] args) {
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("application-config.xml");
context.getBean(Application.class).execute();
}
}
一些观察
@资源显式定义bean不适用于v1
SpringApplication不知道Springconfig,在bean实例化过程中失败
我想了解为什么会出现这个问题以及如何解决它?原因很简单,没有加载xml配置。看看 如果不想接触现有的xml,则需要另一个@configuration注释类和@ImportResource来加载xml配置,就像文档中所说的那样
在我看来,配置中不需要apiKey和url,应该用@value注释它们,并在.properties文件中定义它们。还有spring boot的默认设置,您可以利用它。例如,将properties应用程序命名为.properties并将其放在类路径上,spring boot将自动加载它。您在哪里定义了apiKey和urlv1@Jaiwo99:它在Spring配置中。这两个版本我都没有涉及Spring配置。谢谢。我知道Spring配置没有被读取,但正在寻找加载它的方法。这正是我们所需要的。