springboot部分注解

参考:https://www.cnblogs.com/wl20200316/p/12579982.html

控制层:

@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。

@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。

@Autowired:自动导入依赖的bean

@GetMapping是Spring4.3提供的新注解,它是一个组合注解,等价于@RequestMapping(method = RequestMethod.Get ),用于简化开发,注意:@RequestMapping如果没有指定请求方式,将接收Get、Post、Head、Options等所有的请求方式.同理还有@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping等

@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML

@Controller
@RequestMapping("/test")
public class TestController{

   @Autowired
   private TestServiceImpl serviceImpl;

   @GetMapping("/getAll")
   @ResponseBody
   public RestResponse getAllList(){
     return RestResponse.ok(serviceImpl.getAllList(),"success");
  }

}

@Data注解为类提供读写功能,从而不用写get、set方法;会为类提供 equals()、hashCode()、toString() 方法。。

@Mapper 一般用在接口上  

添加了@Mapper注解之后这个接口在编译时会生成相应的实现类
@Mapper
public interface UserDAO {
    @Select("select * from user where name = #{name}")
    User find(String name);


    @Select("select * from user where name = #{name} and pwd = #{pwd}")
    /**
      * 对于多个参数来说,每个参数之前都要加上@Param注解,
      * 要不然会找不到对应的参数进而报错
      */
    User login(@Param("name")String name, @Param("pwd")String pwd);
}

@MapperScan
作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类

@Configuration使用 

  用@Configuration注释类表明其主要目的是作为bean定义的源

  @Configuration类允许通过调用同一类中的其他@Bean方法来定义bean之间的依赖关系

@Configuration 保证了配置类的内部方法之间依赖调用时都从容器中获取bean.

/**

 * 说明:此处@Configuration 注解的作用,

 * 1、使配置类变成了full类型的配置类,spring在加载Appconfig的时候,Appconfig由普通类型转变为cglib代理类型 ,

 * 2、在 @Bean method中使用,是单例的,不会创建对个对象

 */

@Bean  Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。

SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,在一个方法上使用@Bean注解就表明这个方法需要交给Spring进行管理。

@FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上.

其他注解:

@Data注解为类提供读写功能,从而不用写get、set方法;会为类提供 equals()、hashCode()、toString() 方法。。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface Data {
    String staticConstructor() default "";
}

@Target源码:
    @Documented
	@Retention(RetentionPolicy.RUNTIME)
	@Target({ElementType.ANNOTATION_TYPE})
	public @interface Target {
    	ElementType[] value();
	}


public enum ElementType {
    TYPE, //拼起的 ElementType.TYPE  : 应用在类、接⼝(包括注解类型)或枚举上
    FIELD,// :应用在字段上(包括枚举常量)
    METHOD,// :应用在⽅法上
    PARAMETER,// :应用在参数上
    CONSTRUCTOR,// :应用在构造⽅法上
    LOCAL_VARIABLE,// :应用在局部变量上
    ANNOTATION_TYPE,// :应用在注解上
    PACKAGE,// :应用在包上(极少使⽤)
    TYPE_PARAMETER,// :1.8新增 应用于类型变量
    TYPE_USE,// :1.8新增 应用于任何使用类型的语句中
    private ElementType() {}
}

@Retention :⽤于描述注解的⽣命周期,表示需要在什么级别(在源代码中(SOURCE)、类文件中(CLASS)或者运行时(RUNTIME)。)保存该注解,即保留的时间⻓短。

@Retention 源码:
   @Documented
	@Retention(RetentionPolicy.RUNTIME)
	@Target({ElementType.ANNOTATION_TYPE})
	public @interface Retention {
    	RetentionPolicy value();
	}

RetentionPolicy 是一个枚举类型,它定义了被 @Retention 修饰的注解所支持的保留级别:

public enum RetentionPolicy {
    SOURCE,//此注解类型的信息只会记录在源文件中,编译时将被编译器丢弃,也就是说不会被编译到字节码中
    CLASS,//编译器将注解记录在类文件中,但不会加载到JVM中。如果一个注解声明没指定范围,则系统默认值就是Class
    RUNTIME;//注解信息会保留在源文件、类文件中,在执行的时也加载到Java的JVM中,因此可以反射性的读取。

    private RetentionPolicy() {
    }
}
 
@DefaultValue("John")
private String name;
@DefaultValue("25")
private int age;

 

我们使用了一个DefaultValue注解来设置实体类字段的默认值。然后,在实体类的构造方法中,我们使用反射获取所有字段,并找到带有DefaultValue注解的字段。然后,使用反射设置注解中指定的值给字段。

下面是DefaultValue注解的定义:

import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface DefaultValue {
String value() default "";
}

 

使用该注解时,只需要在实体类的字段上添加@DefaultValue("默认值")即可。

使用示例:

public static void main(String[] args) {
Entity entity = new Entity();
System.out.println(entity.getName());  // 输出:John
System.out.println(entity.getAge());  // 输出:25
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值