java基础篇-注解

注解缘起

       从开始接触java时起,就被Spring这个名词所环绕;当时天真的认为难道这个工作和“春天”有关?一晃现在已经工作快8年了,四季变换,这个“春天”原来是我一直未放下的痛...

注解功效

      你可以把他理解为学习语文时用到的“修饰符”:通过不同的修饰符可以解释不同的语句。让开发变得更加简洁!

注解名单

      由于之前工作中对注解没有仔细的研究过,因此本文会在实际开发过程中进行随时补充,慢慢将之前丢弃的知识进行补漏。

      Spring boot 特有注解

       前提: Spring boot 抛弃XML配置文件,可以自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置。

       1) @Configuration

             通过该注解名字的翻译就可以很直观的理解就是之前Spring框架中的配置文件的意思。此注解为Spring 3.0时代产物,用来替代applicationContext.xml配置文件。

       2)@EnableAutoConfiguration:

             Spring boot自动配置的注解,通过此注解Spring boot能够根据当前类路径下的包或者类来配置 Spring Bean。

       3)@ComponentScan:

             自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。用来替代配置文件中的 component-scan 配置。

       4)@SpringBootApplication:

             Spring boot最核心的注解!!!用于标记Spring boot应用,作用于主类上,用于启动框架各项功能。该注解其实为上述三个注解合体。

       Spring MVC常用注解

        1) @Controller:

               作用于类上,标识该类为控制器。在Spring MVC整体运作流程中controller负责处理DispactherServlet分发的请求。通常该注解会结合@RequestMapping同时使用,@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。

               例如:

                @Controller

                 public class TestController() {...}

       2)@RequestMapping:

             建立请求URL和处理方法之间的对应关系。通常作用于方法上,也可作用于类上。

             当作用于类上时: 第一级访问目录;

             当作用于方法上时: 第二级访问目录;

             注解涉及的属性:

               path-指定请求路径的URL
               value属性和path属性是一样的
               mthod 指定该方法的请求方式
               params 指定限制请求参数的条件
               headers 发送的请求中必须包含的请求头

               例如:

               @Controller

               @RequestMapping("/api/test")

                public class testController(){...}

              

       3)@Autowired:

            注入属性,通过此注解可省去set和get方法。此注入方法使用的是“byType”方式(也就是面试中常问的:通过类型注入);

           例如;

           public class testController() {

                @Autowired

                private TestService service;

          }

          4) @RequestBody:

                 该注解用于将请求的参数放在request中请求体中,而不是拼接在请求地址后面;在日常开发过程中常用于在方法中接收实体传参;

           例如:

           public class testController() {

                  @Autowired

                  private TestService service;

                 public void testAdd(@RequestBody AddVo vo) {'...}

          }

          

         5) @Resource

              该注解同@Autowird注解一致,用于依赖注入。但同Autowird注解不一样的是,该注解使用的是"byName"(通过名称注入)。

          例如:

          public class testController() {

                  @Autowired

                  private TestService service;

                  @Resource

                  private TestMapper mapper;

                 public void testAdd(@RequestBody AddVo vo) {'...}

          }

         6) @PathVariable:

               用于获取请求URL中的占位符值并用于方法中,该注解为Spring MVC向REST发展的一个标志性注解,

              例如:

             @GetMapping("/{id}")

             public TestVo getTestVoById(@PathVariable("id") String id) {...}

             上述样例代码中:该注解将@GetMappinig请求URL中的id值获取,用作方法参数。

        7) @RequestParam:

              该注解用于方法中,获取请求参数。

              例如:

              public void delTest(@RequestParam("id") String id){...}

         8) @ResponseBody:

                该注解用于类上,将Controller中的方法返回值封装到response中的body中。

                例如:

                @RequestMapping("/login")
          @ResponseBody
          public User login(User user){
          return user;
          }

             

        Swagger常用注解

         1) @API

            作用在类上,表明是swagger资源,@API拥有两个属性:value、tags;
            生成的api文档会根据tags分类,直白的说就是这个controller中的所有接口生成的接口文档都会在tags这个list下;
            tags如果有多个值,会生成多个list,每个list都显示所有接口;
       
            例如: @Api(tags="列表1");  @Api(tags={"列表1","列表2"});

            @Api(tags="注解测试说明",valu额= "test-controller")

            public class TestContoller(){...}

          

           2)@ApiOperation

               作用于在方法上,表示一个http请求的操作;主要用于描述接口。

               例如:@ApiOperation(value = "获取问题概要列表(条件分页)")

               @RestController

               @Api(tags="注解测试说明",valu额= "test-controller")

                public class TestContoller(){

                      @ApiOperation(value="查询测试列表")

                       public TestVo getTest(){...}

                }

           3) @ApiParam

                 使用在方法上或者参数上,字段说明;表示对参数的添加元数据(说明或是否必填等);
                  name–参数名
                  value–参数说明
                  required–是否必填

            4) @ApiModel()
                  使用在类上,表示对类进行说明,用于参数用实体类接收;
                  value–表示对象名
                  description–描述

           5) @ApiModelProperty()
                 使用在方法,字段上,表示对model属性的说明或者数据操作更改;
                 value–字段说明
                 name–重写属性名字
                 dataType–重写属性类型
                 required–是否必填
                 example–举例说明
                 hidden–隐藏      

         lombok常用注解

           1) @Data
                 该注解通常用在实体bean上,不需要写出set和get方法,但是具备实体bean所具备的方法,简化编程提高变成速度;
                @Data相当于@Getter @Setter @RequiredArgsConstructor @ToString   @EqualsAndHashCode这5个注解的合集;

                 例如:

                  @Data

                 @ApiModel(value = "问题列表对象,对应前端")

                 public class IssuesListVo {...}

         Mybatis常用注解

          1) @Select

           该注解作用为:快速,简便的执行sql语句。

           例如:

           传统进行表查询操作,需要在Mapper.xml文件中进行编写sql语句然后程序进行执行;

            SELECT NAME FROM STUDENT;

            通过该注解可以直接在Mapper.java文件中进行编写;

            @Select("SELECT NAME FROM STUDENT")

            void queryStudent();

            同时可以通过传参形式将需要执行的sql语句进行配置;

            @Select({"${sql}"})

            void queryStudent(@Param("sql") String sql);

             2) @ResultType

             该注解作用为:定义方法返回类型,同Mapper.xml文件中的resultType一样,可以返回基础类型、对象类型、List、Map;

             例如:

             查询Student表信息使用实体接收,之前在Mapper.xml中进行编写时需要:

            <select id="getStudent" resultType="com.student.entity.Student">

            使用该注解可以为如下:

           @Select("select * from Student")

           @ResultType(Student.class)

            void queryStudent();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值