考虑在配置中定义“包”类型的bean [Spring-Boot]
我收到以下错误:
***************************APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method setApplicant in webService.controller.RequestController required a bean of type 'com.service.applicant.Applicant' that could not be found.
Action:
Consider defining a bean of type 'com.service.applicant.Applicant' in your configuration.
我之前从未见过此错误,但是奇怪的是@Autowire无法正常工作。这是项目结构:
申请人界面
public interface Applicant { TApplicant findBySSN(String ssn) throws ServletException;
void deleteByssn(String ssn) throws ServletException;
void createApplicant(TApplicant tApplicant) throws ServletException;
void updateApplicant(TApplicant tApplicant) throws ServletException;
List<TApplicant> getAllApplicants() throws ServletException;
}
申请人Impl
@Service@Transactional
public class ApplicantImpl implements Applicant {
private static Log log = LogFactory.getLog(ApplicantImpl.class);
private TApplicantRepository applicantRepo;
@Override
public List<TApplicant> getAllApplicants() throws ServletException {
List<TApplicant> applicantList = applicantRepo.findAll();
return applicantList;
}
}
现在,我应该可以只通过Autowire Applicant进行访问,但是在这种情况下,当我在我的应用程序中调用它时,它将无法正常工作
@RestController:
@RestControllerpublic class RequestController extends LoggingAware {
private Applicant applicant;
@Autowired
public void setApplicant(Applicant applicant){
this.applicant = applicant;
}
@RequestMapping(value="/", method = RequestMethod.GET)
public String helloWorld() {
try {
List<TApplicant> applicantList = applicant.getAllApplicants();
for (TApplicant tApplicant : applicantList){
System.out.println("Name: "+tApplicant.getIndivName()+" SSN "+tApplicant.getIndSsn());
}
return "home";
}
catch (ServletException e) {
e.printStackTrace();
}
return "error";
}
}
------------------------更新1 -----------------------
我加了
@SpringBoot" title="SpringBoot">SpringBootApplication@ComponentScan("module-service")
public class WebServiceApplication extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(WebServiceApplication.class, args);
}
}
错误消失了,但是什么也没发生。然而,当我注释掉的一切交易与Applicant
在RestController
以增加之前@ComponentScan()
,我能够返回一个字符串UI
,从而意味着我RestController
是工作,现在它被跳过。我Whitelabel
Error Page现在很丑。
---------------------更新2 --------------------------- —
我添加了它抱怨的bean的基本包。错误读取:
***************************APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method setApplicantRepo in com.service.applicant.ApplicantImpl required a bean of type 'com.delivery.service.request.repository.TApplicantRepository' that could not be found.
Action:
Consider defining a bean of type 'com.delivery.request.request.repository.TApplicantRepository' in your configuration.
我加了 @ComponentScan
@SpringBootApplication@ComponentScan({"com.delivery.service","com.delivery.request"})
public class WebServiceApplication extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(WebServiceApplication.class, args);
}
}
----------------------------更新3 -------------------- -
添加:
@SpringBootApplication@ComponentScan("com")
public class WebServiceApplication extends SpringBootServletInitializer {
仍然在抱怨我的ApplicantImpl
课堂,@Autowires
我回购TApplicantRepository
了它。
回答:
可能是因为该项目已分解为不同的模块。
@SpringBootApplication@ComponentScan({"com.delivery.request"})
@EntityScan("com.delivery.domain")
@EnableJpaRepositories("com.delivery.repository")
public class WebServiceApplication extends SpringBootServletInitializer {
以上是 考虑在配置中定义“包”类型的bean [Spring-Boot] 的全部内容, 来源链接: utcz.com/qa/414216.html