在yaml文件中配置 name ,然后 用@value注入属性,为什么会报错?
可是我在application.properties中配置name,然后再注入属性却可以运行?求指教



已经找到原因了,因为我的yaml文件没有创建对。初学者,见谅见谅
在yaml文件中配置 name ,然后 用@value注入属性,为什么会报错?
可是我在application.properties中配置name,然后再注入属性却可以运行?求指教



已经找到原因了,因为我的yaml文件没有创建对。初学者,见谅见谅
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题解答:
name: xiaoli
则在使用 @Value 注解时,应该写成:
@Value("${name}")
private String name;
注意,这里的 ${name} 是使用了 SpEL 表达式,可以直接引用配置文件中的属性值。 2. 为什么在application.properties中配置name,然后再注入属性却可以运行? 在 application.properties 配置文件中配置属性的格式是固定的,因此使用 @Value 注解来注入属性时不会出现上述的问题。 比如,如果在 application.properties 文件中配置了如下属性:
name=xiaoli
则在使用 @Value 注解时,可以直接写成:
@Value("${name}")
private String name;
这里不需要使用 SpEL 表达式,只需要在 ${} 中写上属性名即可。 代码示例: YamlConfig.yaml 配置文件:
name: xiaoli
People.java 类:
@Component
public class People {
@Value("${name}")
private String name;
public String getName() {
return name;
}
}
HelloController.java 控制器:
@RestController
public class HelloController {
@Autowired
private People people;
@GetMapping("/hello")
public String hello() {
return "Hello, " + people.getName() + "!";
}
}
这里通过 @Value("${name}") 注解来注入属性值,${name} 会自动从配置文件中读取属性值。 运行程序后,访问 http://localhost:8080/hello 会返回 “Hello, xiaoli!” 的字符串。