一、@PropertySource
加载指定的配置文件,一般只能加载properties文件,加载yaml文件可以通过自定义工厂实现。
//Product实体类
@Component
@PropertySource(value = "classpath:product.properties")
@ConfigurationProperties(prefix = "product")
//product.properties配置文件
product.id=1
product.name='goo'
product.stock=2
//测试类
@SpringBootTest
class ApplicationTest{
@Autowired
private Product product;
@Test
void contextLoads() {
System.out.println(product.toString());
}
}
二、@ImportResource
导入Spring的配置文件,让配置文件里面的内容生效,在启动类上加上@ImportResource注解。
@SpringBootApplication
@ImportResource(locations = {"classpath:applicationContext.xml"})
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication .class, args);
}
}
三、@Bean
给容器中添加组件,搭配@Configuration使用。
//HelloService
public class HelloService {
public void printHello(){
System.out.println("hello");
}
}
//添加HelloService组件
@Configuration
public class TestConfig {
@Bean
public HelloService getHelloService(){
return new HelloService();
}
}
//测试
@SpringBootTest
class ApplicationTest{
@Autowired
private HelloService helloService;
@Test
void contextLoads() {
helloService.printHello();
}
}
四、@Value
将配置文件的信息映射到对应的成员变量。
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
- 都能获取到properties和yaml配置文件的值
- 若只需要获取配置文件中的某项值,使用@Value
- 若需要批量注入配置文件中的属性和javaBean对应,使用@ConfigurationProperties
五、Request请求相关注解
5.1 处理Request-Uri请求注解
5.1.1 @PathVariable
绑定URI上面的值到指定的参数。
@GetMapping("/test/{id}")
public String test(@PathVariable("id") Integer id) {
return null;
}
5.2 处理Request-Header请求注解
5.2.1 @RequestHeader
将Request请求header的值绑定到指定的参数。
@GetMapping("/test")
public String test(@RequestHeader("User-Agent")String UserAgent) {
return null;
}
5.2.2 @CookieValue
将Request请求header中Cookie的值绑定到指定的参数。
@GetMapping("/test")
public String test(@CookieValue("JSESSIONID") String cookie) {
return null;
}
5.3 处理Request-Body请求注解
5.3.1 @RequestParam
用来处理Content-Type为:application/x-www-form-urlencoded编码的内容,提交方式GET、POST。
//三个属性value-defaultValue-required
@GetMapping("/test")
public String test(@RequestParam(value = "id",defaultValue = "001",required = true)String id){
return null;
}
5.3.2 @RequestBody
用来处理Content-Type不是:application/x-www-form-urlencoded编码的内容,例如application/json,application/xml等。前端传输的值需要和Dto的字段保持一致。
@GetMapping("/test")
public String test(@RequestBody Dto dto) {{
return null;
}
5.4 处理Attribute类型注解
5.4.1 @SessionAttributes
绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。
5.4.2 @ModelAttribute
使模型对象的特定属性具有 Session 范围的作用域。
RequestMappingHandlerAdapter