-1
では動作しませんが、私のAppConfigです:@Autowiredはここでメソッドのパラメータ
@Configuration
@EnableWebMvc
@ComponentScan
class AppConfig{
@Bean("myname")
fun name(): Name = Name("Quang")
}
データクラス:
data class Name(val value: String ="")
私のコントローラクラス:
@Controller
@RequestMapping("/")
class Main{
@RequestMapping("/")
@ResponseBody
fun index(@Autowired @Qualifier("myname") name: Name): Name {
//this return ""
return name
}
}
結果は "" です"クワン"の代わりに。 しかし、今私はこのようなフィールドからそれを注入した場合、それが正常に動作します:
@Controller
@RequestMapping("/")
class Main{
@Autowired(required = true)
@Qualifier("myname")
lateinit var name:Name
@RequestMapping("/")
@ResponseBody
fun index(): Name {
//this return "Quang" as expected
return name
}
}
私はドキュメントによると、メソッドのパラメータに
これはハンドラメソッドです。これはリクエストを受け取ったときに呼び出され、Spring MVCはそのメソッドによって処理されることを意味していると判断します。 Spring MVCは '@ Autowired'を一切実行しません。いくつかのサポートされているパラメータ型(注釈付きのものもあります)もあります。これらは、仕様に記載されています。 –
ドキュメントを読んだ後、これは本当にばかげた質問であることがわかりました:(。@Autowiredはフィールド、コンストラクタ、セッターメソッドで使用されることを意図しています。 – user2477