Invoquer la méthode de contrôleur de classe java
I just want to know whether controller class method is accessible from another java class.
qui suit est mon contrôleur et de sa méthode.
@Controller
public class TestResultUploadController {
@RequestMapping(method = RequestMethod.POST,value="/uploadTestResult")
public @ResponseBody
String uploadTestResult(String testResultBarcode,int deviceLoc) {
//some code goes here
return something;
}
Je veux juste d'appeler cette méthode de contrôleur à partir d'une autre classe java.
Comment puis-je le faire fonctionner?
s'il vous plaît suggérer..
établir une méthode statique?
Si vous avez à faire, et que je pense que vous avez un problème de conception. peut-être que vous devez déplacer la méthode à un niveau inférieur pour être accessible à d'autres contrôleurs.
FYI. Je peux appeler cette méthode en créant des contrôleurs de l'objet et de la possibilité d'appeler directement la méthode. mais dans ce cas @Autocâblés des champs n'est pas de l'initialisation. Je sais que le design est mauvais mais le débit doit être de cette façon, coz je m en essayant d'appeler cette méthode à partir du fil qui sont initialisées au moment de l'initialisation du contexte.
vous pouvez atteindre ce débit sans avoir à avoir le mal de l'installation. Vous pouvez simplement mettre cette méthode dans un service et de le rendre le contrôleur et votre fil à chaque appel de ce service au lieu de violer mvc principes.
Ce que fo vous voulez dire que vous voulez juste de l'appeler? Envisagez-vous de service, je pense que oui. Si vous ne pouvez point je peux apporter des réponses concrètes
Si vous avez à faire, et que je pense que vous avez un problème de conception. peut-être que vous devez déplacer la méthode à un niveau inférieur pour être accessible à d'autres contrôleurs.
FYI. Je peux appeler cette méthode en créant des contrôleurs de l'objet et de la possibilité d'appeler directement la méthode. mais dans ce cas @Autocâblés des champs n'est pas de l'initialisation. Je sais que le design est mauvais mais le débit doit être de cette façon, coz je m en essayant d'appeler cette méthode à partir du fil qui sont initialisées au moment de l'initialisation du contexte.
vous pouvez atteindre ce débit sans avoir à avoir le mal de l'installation. Vous pouvez simplement mettre cette méthode dans un service et de le rendre le contrôleur et votre fil à chaque appel de ce service au lieu de violer mvc principes.
Ce que fo vous voulez dire que vous voulez juste de l'appeler? Envisagez-vous de service, je pense que oui. Si vous ne pouvez point je peux apporter des réponses concrètes
OriginalL'auteur Swapnil Walivkar | 2013-12-04
Vous devez vous connecter pour publier un commentaire.
Réponse courte: oui, c'est possible. Dans l'autre classe/fil, vous pouvez le faire
Cependant, gardez à l'esprit que votre configuration est très inhabituel, et tous vos autocâblés champs ne serait pas câblé correctement. Si vous obtenez votre contrôleur dans le contexte, vous seriez en mesure d'avoir votre champs filaire/injecté correctement:
ou vous pouvez, dans votre classe, ont:
Encore une fois, c'est très inhabituel, mais très possible. Cependant, la cause juste quelque chose est possible à faire, ne signifie pas que vous devriez le faire. Je recommanderais le plus commun de Printemps/MVC approche dans laquelle vous sous-traitez la logique métier de Services. En gros, pour avoir quelque chose comme ceci:
Et dans votre fil de discussion:
De cette façon, vous seriez en mesure de se moquer de l'UploadTestResultService dans vos tests du contrôleur, et vous pouvez également être en mesure de tester le uploadTestResult méthode de ce service sur son propre, sans qu'il soit dans un contrôleur.
EDIT:
Comment obtenir le Printemps contexte est à l'extérieur de la portée de cette question. Je suppose que vous savez de base Printemps et aussi de base java.
u peut veuillez donner des précisions sur les conditions de ctx.getBean
faites-vous bon composant d'analyse? Êtes-vous déclarer vos services comme les haricots ou les composants? Vous semblez être de nouveau au Printemps. Tout dépend de votre projet d'installation. Essayez d'obtenir permettra à l'autowiring de travail, et si vous ne pouvez pas le faire, il suffit de créer une méthode statique, quelque part, et de l'appeler au lieu de un service: gist.github.com/anonymous/4d072f266ae1bb7bc457
Je suis en train d'essayer d'obtenir autocâblés travaillé. J'ai quelques doutes dans l'esprit.
Expliquer ce que vous avez des doutes. Pour moi, vous semblez ne pas être en mesure de bien saisir l'idée de la façon dont des travaux du Printemps. Vous réussi à autowire champs dans votre contrôleur, pourquoi ne pas vous être en mesure de autowire champs dans votre service? Ma suggestion serait pour vous d'abord passer par une base de Printemps cours intensif avant de commencer à coder au sérieux.
OriginalL'auteur Nikola Yovchev