Je suis assez confus maintenant, je voudrais utiliser l'attribut MongoClient @Autowired dans une de mes classes Controller, mais sans succès. La partie la plus délicate est que @Autowired fonctionne depuis mon @RestController.Spring Boot - Autowired MongoClient
@RestController
public final class WebController {
/** mongoClient */
@Autowired
private MongoClient mongoClient; <- here it's working ...
...
}
mais:
@Controller
public final class MongoUsersDAO {
/** mongoClient */
@Autowired
private MongoClient mongoClient; <- not working ...
...
}
ici je reçois nulle.
Je ne pense pas que le problème serait l'analyse composante alors que mon @SpringBootApplication est situé à xyz, mon @RestController à XYZT et mon @Controller à xyzk paquets, d'où le stand d'entre eux devraient être scanné par Spring. (L'Eclipse marque également mon @Controller comme une classe Spring)
Quoi d'autre pourrait alors être le problème?
Note: Si j'ajoute à mon @Controller il fonctionne très bien, mais le reste du travail @Autowired wount:
@PostConstruct
public void init() {
System.out.println("INIT");
}
Note: Dans le MongoUsersDAO mentionné la chose autowired ne fonctionne pas du tout, je J'ai essayé d'obtenir une propriété simple à partir du fichier application.properties, sans succès.
étrange. Des journaux? où vous avez appelé new MongoUsersDAO()? . Curieusement pourquoi la classe DAO est annotée avec @Controller? – Barath
J'ai aussi essayé de l'annoter avec un service, un composant, etc. Le nouveau mongoUsersDAO() est appelé à l'intérieur du WebController lorsqu'une nouvelle requête arrive. (c'est encore une implémentation de test) –
C'est le problème. N'appelez pas new mongoUserdDao(). Si vous faites cela autowiring ne se produira pas. – Barath