@Resource、@Autowired、@Value
- @Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找
- @Resource 是先根据名称查找,如果(根据名称)查找不到,再根据类型进行查找
-
读取中文时会乱码,因为springboot默认用CharacterReader类以StandardCharsets.ISO_8859_1编码读取properties文件, 解决方式
@RestController public class TestController { @Value(value = "${employee.name}") private String name; @GetMapping("/getName") public String getName() throws UnsupportedEncodingException { String myName = new String(name.getBytes("ISO8859-1"), StandardCharsets.UTF_8); return myName; } }
@PostConstruct
在bean初始化前调用该注解修饰的方法,可以给静态变量赋值,类似的可以实现InitializingBean接口的afterPropertiesSet方法
调用时机:依赖注入 --> 初始化前(@PostConstruct)--> 初始化(InitializingBean) --> 初始化后
@RestController 和 @Controller 区别
- @RestController = @Controller + @ResponseBody
- @Controller一般返回一个view视图,@RestController 将对象数据直接以 JSON 形式写⼊Response对象的body中
@RequestBody
将请求体中的json数据转换成java对象
@RequestParam
获取表单中单个字段的数据
@PropertySource
该注解用于读取指定配置文件
@RestController
@RequestMapping
@PropertySource(value = "classpath:{exception.properties}", encoding = "UTF-8")
public class TestPropertiesController {
@Autowired
Environment env;
@GetMapping("testEnv")
public String testENV(HttpServletRequest request) {
return env.getProperty("DEMO_00001");
}
}
@ConfigurationProperties
-
yaml配置:
com: company: list: - id: 1 name: tom age: 20 - id: 12 name: jerry age: 25 -
配置类
@Configuration @ConfigurationProperties(prefix = "com.company") @Data public class UserList { private List<User> list; }
@ResponseStatus
@ResponseStatus(value = HttpStatus.OK),设置响应状态码(不要加reason属性,否则页面直接报错)