我像这样使用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;
}
}
======================
但是当我这样使用时,变量“baidu url”无法解决:
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
当您将控制器注释为@RestController
时,您的班级将成为@Controller
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController
@Controller
注释类是@Component
:
@Documented
@Component
public @interface Controller
在组件扫描期间,spring容器将初始化您的类,@Autowire
字段并注入@Value
在你的第二个例子中,你的UrlService
不是bean,所以没有绑定/注入。
你应该用@Service
(或其他标记,如@Component
......)标记你的服务,让弹簧容器为你注入baiduurl
值。