zoukankan      html  css  js  c++  java
  • 常见的springmvc、SpringBoot的注解

    springMvc的常用注解 :


    @Controller
     :用于标记在一个类上,使用它标记的类就是一个springmcv Controller对象,分发处理器将会扫描使用了该注解
     的类的方法,并检测该方法是否使用了@RequestMapping注解。@Controller只是定义
     了一个控制器类,而使用了@RequestMapping注解的方法才是真正处理请求的处理器

    @RequestMapping
     :用于标记在一个方法或类上,用来处理请求地址映射的注解,用于类上,表示类中所有响应请求处理的方法都是以该地址
      作为父路径,返回值会通过视图解析器解析为实际的物理视图,然后做转发操作
     属性:
      value:指定请求的实际地址
      method: 指定请求的method类型
      consumes: 指定处理请求的内容提交类型(Content-Type),例如application/josn,text/html
      produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
      param: 指定request中必须包含的参数值
      headers:指定request中必须包含某些指定的header值,才能让改方法处理请求

    @Resource和@Autowired
      @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
      1、共同点
        两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。
      2、不同点
      (1)@Autowired
      @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
       返回值会通过视图解析器解析为实际的物理视图,然后做转发操作


         @Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属            性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。如下:
       public class HelloWorld{
              @Autowired
              @Qualifier("userDao")
        private UserDao userDao;
       }
        (2)@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。
            @Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为         bean的类型。
             所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,
             这时将通过反射机制使用byName自动注入策略。
     
    @PathVariable
     用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。
     @RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET) 
          public String getLogin(@PathVariable("userId") String userId, 
              @PathVariable("roleId") String roleId){ 
              System.out.println("User Id : " + userId); 
              System.out.println("Role Id : " + roleId); 
              return "hello"; 
          } 

    @CookieValue
      作用:用来获取Cookie中的值;
      参数: value:参数名称   required:是否必须  defaultValue:默认值
     @RequestMapping("/testCookieValue")
        public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
            System.out.println("JSESSIONID = " + sessionId);
            return "success";
        }

    @RequestParam
      @RequestParam用于将请求参数区数据映射到功能处理方法的参数上,用例:
     @RequestMapping("/testRequestParam")
      public String testRequestParam(@RequestParam("id") int id) {
       System.out.println("testRequestParam  " + id);
            return "success";
        }

    @SessionAttributes
      @SessionAttributes即将值放到session作用域中,写在class上面。  
      @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(value 属性值),
    还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(types 属性值),
    用例:@SessionAttributes(value = {"user"}, types = {String.class})

    @ResponseBody 
      作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
    使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)


    Springboot常用注解:

    @SpringBootApplication:
     包含@Configuration、@EnableAutoConfigeration、@ComponentScan
     通常用在主类上


    @Repository:
     用于标注数据访问组件,既DAO组件

    @Service
     用于标注业务层组件


    @RestController:
     包含@Controller、@ResponseBody
     用于标注控制层组件


    @ResponseBody:
     表示该方法返回的结果直接写入Http Response body中,不会被解析为跳转路径

    @Component:
     泛指组件,当组件不好归类时使用

    @ComponentScan:
     组件扫描,相当于<context:component-scan>,如果扫描到有@Component、@Controller、@Service等这些
     注解的类,则把这些类祖册为bean

    @Configuration:
     指出该类是Bean配置的信息源,相当于XML中的<beans></beans>,一般加在主类上

    @Bean:
     相当于XML中的<bean></bean>,放在方法上,意思是生产一个Bean,并交由spring管理

    @EnableAutoConfiguration:
     让Springboot根据应用所声明的依赖来对spring框架进行自动配置,一般加在主类上

    @AutoWired:
     byType方法。把配置好的Bean拿来用,完成属性、方法的组装,自动装配,当加上(required=false)时,
     即便找不到这个Bean也不报错

    @Qualifier:
     当有多个同一类型的Bean时,可以用@Qualifier("name")来指定,与@Autowired配合使用

    @Resource(name="name",type="type"):
     没有括号的话,默认ByName,与@Autowired类似

    @Profiles
     spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效
     任何@Component或@Configuraion都能被@Profile标记,从而限制加载它的时机

    @ConfigurationProerties
     SpringBoot加载校验外部的配置

    @ControllerAdvice
     包含@Component,可以被扫描,用于统一处理异常

    @ExceptionHandler(Exception.class):
     用于方法上表示遇到这个异常就执行这个方法,与@ControllerAdvice 配合使用

  • 相关阅读:
    OpenStack 多节点纳管 vCenter 5.5
    OpenStack 多节点纳管 vCenter 5.5
    java.utils.UUID类介绍
    BeanUtils工具类
    Request笔记
    JavaEE_XMind总结
    JavaSE_XMind总结
    完成页面的定时跳转
    使用jsp完成商品列表的动态显示
    Respone笔记
  • 原文地址:https://www.cnblogs.com/zhonglihai/p/9116578.html
Copyright © 2011-2022 走看看