gpt4 book ai didi

java - java @Value 如何工作?

转载 作者:行者123 更新时间:2023-12-01 17:50:52 25 4
gpt4 key购买 nike

我像这样使用了java @Value,运行良好,并且可以正确解析变量“baiduurl”:

package com.lanyyyy.springdemo.controllers;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.lanyyyy.springdemo.service.*;
@RestController
public class GetURL {
@Value("${baiduurl}")
public String baiduurl;

@RequestMapping(path="/getbaidu", method=RequestMethod.GET)
public String getBaiduurl(){
// return "hello";
return baiduurl;
}

}

======================

但是当我这样使用时,变量“baiduurl”无法解析:

package com.lanyyyy.springdemo.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;

@PropertySource("classpath:application.properties")
public class UrlService {
@Value("${baiduurl}")
public String baiduurl;

// @RequestMapping(path="/getbaidu", method=RequestMethod.GET)
public String getBaiduurl() {
return baiduurl;
}
}

有什么问题吗????或者我使用了错误的@Value??????

在我的 applicaiton.properties 中:

baiduurl=http://www.baidu.com
server.port=8888

最佳答案

当您将 Controller 注释为@RestController时,您的类将成为@Controller

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController

@Controller 注解的类是 @Component:

@Documented
@Component
public @interface Controller

在组件扫描期间,Spring 容器将初始化您的类、@Autowire 字段并注入(inject) @Value

在第二个示例中,您的 UrlService 不是 bean,因此不会完成任何绑定(bind)/注入(inject)。

您应该使用 @Service (或其他标记,如 @Component...)标记您的服务,以便注入(inject) spring 容器 baiduurl为您带来值(value)。

关于java - java @Value 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50318200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com