SpringBoot项目使用@Value读取配置文件application.yml的值

本文介绍了在SpringBoot项目中如何使用@Value注解从application.yml配置文件中读取值。重点指出@Value的使用场景,包括需配合@Service或@Component注解,字段不应为static以及对象应通过@Autowired或@Resource注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot项目使用@Value读取配置文件application.yml的值

前景:因为之前用@Value注解都是在Service里面,而Service的调用都是用的@Autowired等注解注入,所以并没有注意@Value的用法,在没有@Service等注解里使用无效时才知道

配置文件:
在这里插入图片描述
@Value的正确使用法
1. 使用@value的类中必须被@Service或@Component注解
2. 字段对象也不能用static修饰,如果用了就要用set方法来赋值

@Component
public class ImageRecognition {
	
	//static示例
	//public static String APP_ID;
	//@Value("${image.recognition.appid}")
    //public void setApiId(String apiId) {
    //   APP_ID= apiId;
    //}
	
	//设置APPID/AK/SK
    @Value("${image.recognition.appid}")
    public String APP_ID;

    @Value("${image.recognition.apikey}")
    public String API_KEY;

    @Value("${image.recognition.secretkey}")
    public String SECRET_KEY;

    public AipImageClassify newInstance() {
        //初始化一个AipImageClassify
        AipImageClassify client = new AipImageClassify(APP_ID, API_KEY, SECRET_KEY);
        // 可选:设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
        return client;
    }
}

3. 对象必须使用@Autowired、@Resource注入,才能正常使用@Value注解(不能用new的对象)

@Controller
@RequestMapping(KSP_CONST.SECURITY_PREFIX + "image/")
public class ImageController {

	@Autowired
    private ImageRecognition imageRecognition;

    @ResponseBody
    @RequestMapping("queryImageDetect")
    public List<Map> queryImageDetect() {
        //ImageRecognition imageRecognition = new ImageRecognition();
        List<Map> mapList = imageRecognition.animalDetect("C:\\Users\\ksxx\\Desktop\\timg.jpg");
        return mapList;
    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值