Prenez la classe abstraite générale suivante:@Configurable ne fonctionne pas sur la sous-catégorie
@Configurable
public abstract class TestEntityRoot {
public abstract String print();
}
Et une sous-classe:
@Configurable
public class TestEntity extends TestEntityRoot{
private TestEntityService testEntityService;
@Autowired
public void setTestEntityService(TestEntityService testEntityService) {
this.testEntityService = testEntityService;
}
@Override
public String print() {
return testEntityService.print();
}
}
Lorsque le contrôleur d'appel:
@RestController
public class TestEntityController {
@GetMapping(name = "/test")
public String print() {
TestEntity entity = new TestEntity();
return entity.print();
}
}
tout va bien. Mais si appeler comme ceci:
@RestController
public class TestEntityController {
@GetMapping(name = "/test")
public String print() {
TestEntityRoot entity = new TestEntity();
return entity.print();
}
}
Je reçois un pointeur nul. Est-il possible que le deuxième exemple de travail?
Vous ne pouvez pas créer de beans Spring avec caling 'new' sur le bean. Le printemps a besoin de le traiter, d'injecter des haricots. Aussi, je vois un autre problème - Ne pas injecter des services dans les entités - c'est faux. Les entités ne devraient pas avoir de logique. – Gondy