Java Spring MVC projesinde çalışıyorum. Gözatıcıdan alt yöntemi erişirken kontrol sınıfları"this.personService", niçin yalnızca sub() yöntemi diğer sınıftan çağrıldığında boştur?
birine PersonController.java
@Controller
@SessionAttributes({ "mob_Number"})
public class PersonController {
private static final Logger logger = LoggerFactory.getLogger(PersonController.class);
private PersonService personService;
@Autowired(required=true)
@Qualifier(value="personService")
public void setPersonService(PersonService ps){
this.personService = ps;
}
public PersonController(PersonService personService){
this.personService = personService;
}
public PersonController(){
}
....
@RequestMapping(value="/sub",method = RequestMethod.POST, headers = "Accept=application/json")
@ResponseBody
public String sub(@RequestBody String json){
List result = this.personService.getNumber();
....
}
Yukarıdaki this.personService olarak
boş değil.
PersonServiceImpl.java
@Service
public class PersonServiceImpl implements PersonService, UserDetailsService {
private static final Logger logger = LoggerFactory.getLogger(PersonServiceImpl.class);
private PersonDAO personDAO;
private PersonService personService;
public void setPersonDAO(PersonDAO personDAO) {
this.personDAO = personDAO;
}
PersonController personController = new PersonController(personService);
String res = personController.sub(codeJSON.toString());
....
}
şöyle yöntemiyle yukarıdaki "this.personService" null döndürür aracılığıyla yapılırsa
Ama başka bir sınıfta
, ben alt yöntemini çağırın.1) Neden böyle oluyor? 2) Bu sorunu nasıl giderebilirim?
içindeki
PersonService
tükendiğini fark onun tuhaf, diğer hizmet veya DAO fasulye referans alınmalıdır setter enjeksiyonu ('@ Autowired' işlevini kurucuya taşıyın). – chrylis'PersonServiceImpl' personService'ini nereden alıyor? Görünüşe göre belki de bunun yerine 'bunu kullanmalısınız. – chrylis
yeni PersonController (personService); <- personService bu noktada boş. Ayrıca, enjekte edilen bağımlılıkları olan çerçeveden kurtarmak yerine, denetleyicinin yeni bir örneğini oluşturuyorsunuz. – RubioRic