Comment mettre en place init-méthode d'un bean quand le printemps est configuré par l'annotation?
J'utilise spring roo à bâtir projet et de l'annotation, et il n'y a pas de fève de définition dans le fichier XML. Toutes les informations de configuration est en *.aj fichier.
Et maintenant je veux mettre en place une méthode d'initialisation pour un haricot qui n'ont pas de constructeur par défaut (que la fève est à partir de la troisième partie et il a un constructeur avec arguments, et je ne peux pas supprimer ou de donner un constructeur par défaut.)
Est ce que quelqu'un peut me dire comment faire s'il vous plaît?
La raison pour laquelle je veux faire, c'est parce que je veux utiliser applicationContext.getBean("thatBeanName")
dynamiquement pour obtenir le haricot et l'utiliser. Parce que les haricots n'ont pas de constructeur par défaut, j'ai toujours l'erreur: java.lang.NoSuchMethodException: com.to.that.bean.<init>()
et c'est pourquoi je tiens à ajouter de l'initialisation de la méthode à la fève.
OriginalL'auteur Charles | 2011-12-24
Vous devez vous connecter pour publier un commentaire.
Utilisation
@PostConstruct
comme illustré dans l'exemple ci-dessous. Il est équivalent àinit-method="initialize()"
Pourquoi?
voir mon raisonnement ici, le mettre dans la réponse, donc stackoverflow.com/a/46569019/1479668
OriginalL'auteur Aravind R. Yarram
OriginalL'auteur BrentR
Au printemps récipient qu'il est "init" de la méthode que l'on appelle le dernier,
@postconstruct appelé avant afterPropertiesSet. il est donc plus sûr si quelqu'un manquer d'utilisation.
"Plusieurs cycle de vie des mécanismes configurés pour le même bean, avec différentes méthodes d'initialisation, sont appelés comme suit:
Bien que, aujourd'hui, je préfère être plus Printemps indépendants et de l'utilisation de @Postconstract, ou même de configurer par défaut de la méthode init de la reconnaissance. pour avoir un sens uniquement nom de la méthode d'indiquer qu'il doit être utilisé pour l'initialisation - clair à partir de cadres, de clair à partir des annotations.
OriginalL'auteur magulla
@Pangea a mis en , @PostConstruct est le meilleur choix. Vous pourriez également mettre en œuvre initializingBean et effectuer l'initialisation dans afterPropertiesSet méthode .Vérifier ici pour cette approche.
OriginalL'auteur Aravind A
J'ai réalisé qu'il y a eu plusieurs réponses à essayer de résoudre le problème. Mais avec le nouvellement introduit
@Configuration
qui est populairement utilisé dans Printemps de Démarrage. Les choses sont un peu changé.Si vous utilisez
@Bean
annotation dans@Configuration
annoté de la classe comme:Si vous voulez utiliser un programme appelé automatiquement la méthode sur l'exemple d'haricot lors de l'initialisation, vous avez deux options ci-dessous:
Option1:
Option2:
MAIS, comme c'est expliquer dans
@Bean
Java Doc ici:Le second est considéré comme une meilleure réponse. Voir le lien ici
OriginalL'auteur cinqS