not registered via @EnableConfigurationProperties or marked as Spring component
利用@ConfigurationProperties(prefix = "")来绑定属性时报错:
not registered via @EnableConfigurationProperties or marked as Spring component
POM依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
注解需要
@EnableAutoConfiguration
@RestController
@EnableConfigurationProperties({BookController.class})
@ConfigurationProperties(prefix = "book")
正是缺少@EnableConfigurationProperties({BookController.class}),才报该错的
代码
=========================BookController.class====================
1 package controller; 2 3 import org.springframework.beans.factory.annotation.Value; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 6 import org.springframework.boot.context.properties.ConfigurationProperties; 7 import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RestController; 10 @EnableAutoConfiguration 11 @RestController 12 @RequestMapping 13 @ConfigurationProperties(prefix = "book") 14 public class BookController { 15 // @Value("${book.author}") 16 private String author; 17 // 18 // @Value("${book.name}") 19 private String name; 20 21 @RequestMapping("/bookInfo") 22 public String showInfo(){ 23 return author + ":" + name; 24 } 25 26 }
==================================application.yml===============
1 2 book: 3 author: Tom 4 name: Springboot
=========================DemoConfig.class====================
1 2 package controller; 3 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.context.properties.EnableConfigurationProperties; 6 7 8 @EnableConfigurationProperties({BookController.class}) 9 public class DemoConfig { 10 public static void main(String[] args) { 11 12 SpringApplication.run(BookController.class,args); 13 } 14 }