Tôi nhận được lỗi sau:
***************************
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.
Tôi chưa bao giờ thấy lỗi này trước đây nhưng thật kỳ lạ là @Autowire không hoạt động. Đây là cấu trúc dự án:
Giao diện ứng viên
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;
}
Người nộp đơn
@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;
}
}
Bây giờ tôi có thể chỉ Người đăng ký tự động và có thể truy cập, tuy nhiên trong trường hợp này, nó không hoạt động khi tôi gọi nó trong @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";
}
}
------------------------ CẬP NHẬT 1 -----------------------
Tôi đã thêm
@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);
}
}
và lỗi đã biến mất nhưng không có gì xảy ra. Tuy nhiên khi tôi nhận xét ra tất cả mọi thứ buôn bán với Applicant
trong RestController
trước khi thêm @ComponentScan()
tôi đã có thể trả về một chuỗi các UI
, do đó có nghĩa là tôi RestController
đang làm việc, bây giờ nó đã được bỏ qua. Tôi xấu xí Whitelabel Error Page
bây giờ.
--------------------- CẬP NHẬT 2 --------------------------- ---
Tôi đã thêm gói cơ bản của hạt đậu mà nó đã phàn nàn. Lỗi đọc:
***************************
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.
Tôi đã thêm @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);
}
}
---------------------------- Cập nhật 3 -------------------- -
thêm:
@SpringBootApplication
@ComponentScan("com")
public class WebServiceApplication extends SpringBootServletInitializer {
vẫn đang phàn nàn về ApplicantImpl
lớp học @Autowires
của tôi mà tôi repo TApplicantRepository
vào đó.