• Spring不常用但有用的注解


    1、Spring MVC和REST注解

    @CookieValue

    此注解用在@RequestMapping声明的方法的参数上,可以把HTTP cookie中相应名称的cookie绑定上去。

    @ReuestMapping("/cookieValue")
    public void getCookieValue(@CookieValue("JSESSIONID") String cookie){
    
    }

    cookie即http请求中name为JSESSIONID的cookie值。

    @CrossOrigin

    此注解用在class和method上用来支持跨域请求,是Spring 4.2后引入的。

    @CrossOrigin(maxAge = 3600)
    @RestController
    @RequestMapping("/users")
    public class AccountController {
        @CrossOrigin(origins = "http://xx.com")
        @RequestMapping("/login")
        public Result userLogin() {
            // ...
        }
    }

    @ExceptionHandler

    此注解使用在方法级别,声明对Exception的处理逻辑。可以指定目标Exception。

    @InitBinder

    此注解使用在方法上,声明对WebDataBinder的初始化(绑定请求参数到JavaBean上的DataBinder)。在controller上使用此注解可以自定义请求参数的绑定。

    @MatrixVariable

    此注解使用在请求handler方法的参数上,Spring可以注入matrix url中相关的值。这里的矩阵变量可以出现在url中的任何地方,变量之间用;分隔。如下:

    // GET /pets/42;q=11;r=22
    @RequestMapping(value = "/pets/{petId}")
    public void findPet(@PathVariable String petId, @MatrixVariable int q) {
        // petId == 42
        // q == 11
    }

    需要注意的是默认Spring mvc是不支持矩阵变量的,需要开启。

    <mvc:annotation-driven enable-matrix-variables="true" />

    注解配置则需要如下开启:

    @Configuration
    public class WebConfig extends WebMvcConfigurerAdapter {
    
        @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            UrlPathHelper urlPathHelper = new UrlPathHelper();
            urlPathHelper.setRemoveSemicolonContent(false);
            configurer.setUrlPathHelper(urlPathHelper);
        }
    }

    @PathVariable

    @RequestMapping("/users/{uid}")

    可以使用@PathVariable将路径中的参数绑定到请求方法参数上。

    @RequestMapping("/users/{uid}")
    public String execute(@PathVariable("uid") String uid){
    }

    @RequestAttribute

    此注解用在请求handler方法的参数上,用于将web请求中的属性(request attributes,是服务器放入的属性值)绑定到方法参数上。

    @RequestHeader

    此注解用在请求handler方法的参数上,用于将http请求头部的值绑定到参数上。

    @RequestParam

    此注解用在请求handler方法的参数上,用于将http请求参数的值绑定到参数上。

    @RequestPart

    此注解用在请求handler方法的参数上,用于将文件之类的multipart绑定到参数上。

    @ResponseStatus

    此注解用于方法和exception类上,声明此方法或者异常类返回的http状态码。可以在Controller上使用此注解,这样所有的@RequestMapping都会继承。

    @ControllerAdvice

    此注解用于class上。前面说过可以对每一个controller声明一个ExceptionMethod。这里可以使用@ControllerAdvice来声明一个类来统一对所有@RequestMapping方法来做@ExceptionHandler、``@InitBinder以及@ModelAttribute`处理。

    @RestController

    此注解用于class上,声明此controller返回的不是一个视图而是一个领域对象。其同时引入了@Controller和@ResponseBody两个注解。

    @RestControllerAdvice

    此注解用于class上,同时引入了@ControllerAdvice和@ResponseBody两个注解。

    @SessionAttribute

    注解用于方法的参数上,用于将session中的属性绑定到参数。

    @SessionAttributes

    此注解用于type级别,用于将JavaBean对象存储到session中。一般和@ModelAttribute注解一起使用。如下:

    @ModelAttribute("user")
    
    public PUser getUser() {}
    
    // controller和上面的代码在同一controller中
    @Controller
    @SeesionAttributes(value = "user", types = {
        User.class
    })
    
    public class UserController {}

    2、数据访问注解

    @Transactional

    注解使用在接口定义、接口中的方法、类定义或者类中的public方法上。需要注意的是此注解并不激活事务行为,它仅仅是一个元数据,会被一些运行时基础设施来消费。

    3、任务执行,调度注解

    @Scheduled

    此注解使用在方法上,声明此方法被定时调度。使用了此注解的方法返回类型需要是Void,并且不能接受任何参数。

    @Scheduled(fixedDelay=1000)
    public void schedule() {
    
    }
    
    @Scheduled(fixedRate=1000)
    public void schedulg() { 
    
    }

    第二个与第一个不同之处在于其不会等待上一次的任务执行结束。

    @Async

    此注解使用在方法上,声明此方法会在一个单独的线程中执行。不同于Scheduled注解,此注解可以接受参数。

    使用此注解的方法的返回类型可以是Void也可是返回值。但是返回值的类型必须是一个Future。

    4、测试注解

    @ContextConfiguration

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = SpringCoreConfig.class)
    public class UserServiceTest {
    
    }

    END

  • 相关阅读:
    【Gamma】Scrum Meeting 5
    【Gamma】Scrum Meeting 4
    【Gamma】Scrum Meeting 3
    团队贡献分汇总
    【Gamma】Scrum Meeting 2
    【Gamma】 Scrum Meeting 1
    Beta阶段测试报告
    From scipy.misc import imread 中 ImportError: cannot import name imread的解决方法
    【软件工程】结对项目
    【软件工程】第一次阅读作业
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/13553829.html
Copyright © 2020-2023  润新知