我收到以下错误:
*************************** 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:
@RestController:
@RestController public 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 -----------------------
我加了
@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现在很丑。
Applicant
RestController
@ComponentScan()
UI
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
@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了它。
ApplicantImpl
@Autowires
TApplicantRepository
可能是因为该项目已分解为不同的模块。
@SpringBootApplication @ComponentScan({"com.delivery.request"}) @EntityScan("com.delivery.domain") @EnableJpaRepositories("com.delivery.repository") public class WebServiceApplication extends SpringBootServletInitializer {