我收到以下错误:
*************************** 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 申请人并能够访问,但是在这种情况下,当我在我的@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()我能够返回一个字符串 the 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 {