我在一个小项目中使用了SpringBootApplication。架构很简单:
条目文件:
@SpringBootApplication
@PropertySource("classpath:application.properties")
public class RptApp implements CommandLineRunner
{
@Autowired private RptService rptService;
@Override
public void run(String... args) throws Exception {
rptService.doStuff(){...};
}
}
其中RptService是一个接口,它有一个实现:RptServiceImpl.java。 RptServiceImpl.java是用@Service注释的。
@Service
public class RptServiceImpl implements RptService {
@Override
public void doStuff();
}
我的理解是@SpringBootApplication已经嵌入@ComponentScan,@ EnableComponentScan(或类似的东西),@ Configuration,以便rptService应该由容器自动连接。相反,它引发了一个错误:
Description:
Field RptService in XXXX.RptApp required a bean of type 'xxx.xxx.xxx.RptService' that could not be found.
Action:
Consider defining a bean of type 'xxx.xxx.xxx.RptService' in your configuration.
我知道如何找到基于提示的解决方法,除此之外。
我写了另一个简单的类Client,用@Component注释它,并在主文件中@Autowired它。 Spring没有选择问题。
我的pom文件的相关部分如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.4.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
....
有谁可能会发光?
答案 0 :(得分:1)
RptService
应该在主条目文件的子目录中被选中Spring @ComponentScan