[JAVA] Lors du changement du contrôleur de Spring Web MVC en kotlin, @Autowired Le composant spécifié n'est pas injecté et devient nul

L'article original est ici.

Supposons que vous ayez une classe Java comme celle ci-dessous.

@Controller
@Scope("request")
@RequestMapping("/foo/bar")
public class FooBarController: Foo() {
    @Autowired
    FooBarService fooBarService;

    @RequestMapping(method = RequestMethod.GET)
    public String foo() {
        return fooBarService.doSomething();
    }
}

Si vous le convertissez automatiquement en koilin, cela ressemblera à ceci.

@Controller
@Scope("request")
@RequestMapping("/foo/bar")
class FooBarController {
    @Autowired
    internal var fooBarService: FooBarService? = null

    @RequestMapping(method = arrayOf(RequestMethod.GET))
    fun foo(): String {
        return fooBarService!!.doSomething()
    }
}

Si cela est laissé tel quel, Autowired de fooBarService ne fonctionnera pas et restera nul.

Ainsi, comme indiqué dans ici ,

@Controller
@Scope("request")
@RequestMapping("/foo/bar")
open class FooBarController(val fooBarService: FooBarService) {
    @RequestMapping(method = [RequestMethod.GET])
    open fun foo(): String {
        return fooBarService.doSomething()
    }
}

Autowired fonctionnera en ajoutant l'ouverture à la classe et le plaisir. J'ai également supprimé @Autowired, je l'ai déplacé vers le constructeur et fait des tableaux de méthodes un crochet. C'est plus beau.

Postscript

Si vous utilisez kotlin-spring comme décrit dans here, il sera automatiquement ajouté à la classe avec l'annotation d'héritage @Component. Il semble qu'il accordera ouvert.

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
    }
}

apply plugin: "kotlin-spring" // instead of "kotlin-allopen"

Recommended Posts

Lors du changement du contrôleur de Spring Web MVC en kotlin, @Autowired Le composant spécifié n'est pas injecté et devient nul
Le nom officiel de Spring MVC est Spring Web MVC
Comment résoudre le problème de non-sortie du journal de connexion lorsque l'application Web est arrêtée
[RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]
Bibliothèque non chargée lors de la tentative de mise à niveau de la version ruby et des rails s
Quand le survol d'Eclipse est difficile à voir
J'ai essayé de résumer les bases de kotlin et java
L'idée de couper quand l'erreur n'est pas résolue
[Rails] Lorsque le changement de disposition du dispositif n'est pas reflété
Lancer une exception et attraper lorsqu'il n'y a pas de gestionnaire correspondant au chemin au printemps