Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringApplication无法实例化bean_Java_Spring_Web Services - Fatal编程技术网

Java SpringApplication无法实例化bean

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();

我是Spring&WebService新手,正在Spring.io上尝试一些指南。 我计划创建一个基本的RESTful Web服务,它使用Google Direction API并只返回状态

以下是课程:

资源

@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配置没有被读取,但正在寻找加载它的方法。这正是我们所需要的。