RestController 自动装配接口 nosuchbeanddefinition
RestController autowire interface nosuchbeandefinition
我使用 spring-boot 1.5.10 RELEASE 编写了一个应用程序。我需要自动装配我将用作 WebService 的接口。
我有配置 class:
package com.app.packA;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class StartWebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(StartWebApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(StartWebApplication.class);
}
}
我的 RestController:
package com.app.packA;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
@Autowired
CalculatorWs calcService;
}
和来自另一个包的接口
package com.app.packB;
@WebService(name="CalculatorService")
public interface CalculatorWs {
public int sum();
public int multiply();
}
当我尝试在 Tomcat 7 上启动此应用程序时,我收到消息 In "GreetingController" NoSuchBeanDefinition "CalculatorWs"
您需要将包 com.app.packB 添加到您的 spring 启动应用程序。
@SpringBootApplication(scanBasePackages = "com.app")
或者您可能想要添加要扫描的特定包。
@SpringBootApplication(scanBasePackages = {"com.app.packA", "com.app.packB"})
使用@Service
代替@WebService
我使用 spring-boot 1.5.10 RELEASE 编写了一个应用程序。我需要自动装配我将用作 WebService 的接口。 我有配置 class:
package com.app.packA;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class StartWebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(StartWebApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(StartWebApplication.class);
}
}
我的 RestController:
package com.app.packA;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
@Autowired
CalculatorWs calcService;
}
和来自另一个包的接口
package com.app.packB;
@WebService(name="CalculatorService")
public interface CalculatorWs {
public int sum();
public int multiply();
}
当我尝试在 Tomcat 7 上启动此应用程序时,我收到消息 In "GreetingController" NoSuchBeanDefinition "CalculatorWs"
您需要将包 com.app.packB 添加到您的 spring 启动应用程序。
@SpringBootApplication(scanBasePackages = "com.app")
或者您可能想要添加要扫描的特定包。
@SpringBootApplication(scanBasePackages = {"com.app.packA", "com.app.packB"})
使用@Service
代替@WebService