Spring注解详解

常用注解

@AutoWired 下面用的是接口 ,按照类型注入

@Date    用在实体类上,作用是 可以不用写 getter与setter方法

@Mapper 用的dao层,在dao层加入此注解,可以在方法上直接进行sql语句的编写,用@Select(""),@Delete(""),@update(""),@insert("") 这四个进行编写

@Component 和三个伴生注解

                   这四个注解都是用于修饰类的,适用于把当前类创建一个对象,存入Spring 的ioc容器中。

                ----@Controller,@Service,@Repository,针对业务层,服务层的实现层,实体层

@Service 用在 服务层的实现类上,用来表明 这是服务bean 

@Configuration 用于表示当前类是spring的一个配置类,用来代替spring中的applicationContext.xml,用于编写配置的类

@ComponentScan 用户创建容器时要扫描的包,在扫描位置时,可以制定包名,也可以指定类,

同时支持定义扫描规则,比如可以 包含进去哪些,排除掉哪些

@Bean  作用在方法上,表示把当前方法的返回值存入spring 的ioc容器。同时还可以出现在注解上,作为元注解来使用

@Import 导入注解,可以导入 普通类,带有@Configuration的配置类,ImportSelector方式导入的类,通过 ImportBeanDefinitionRegistrar 方式导入的类。

该注解作用在类上,一般和注解驱动配置类一起使用

@Primary 用于 制定bean的注入优先级,被@Primary修饰的bean对象优先注入

@Responsebody 注解表示该方法返回的结果直接写入HTTP相应中去,,一般在异步获取数据时使用,只能返回String,Object,Json等实体对象,不能条撞到模版页面,在方法的形参中去使用这个注释时,controller的路径注解必须使用@PostMapping(),它就是用来接收http的post请求的

@RequestParam 将请求参数和控制方法的形参创建关系,一共有三个属性,value:设置是否必须传输请求参数名,与name等价。required:设置是否必须传输请求参数 ,用来接收url?后面的参数,可以为多个

@RequestMapping 返回值通常解析为跳转路径

@RequestBody  将http请求正文 插入到 方法中,从页面中拿到的内容放到代码中

@RestController (@Controller只是定义了一个控制器类,而使用@RequestMapping注解的方法才是处理请求的处理器。)

Controller类中的方法返回值,默认是JSON对象,也就是相当于@Controller里面的方法上添加了注意:@Controller和@RestController的区别主要有以下几点:                                       @RestController相当于@Controller和@ResponseBody合在一起的作用;
如果使用@RestController注解Controller层的话,则返回的是return里面的内容,无法返回到指定的页面,配置的视图解析器InternalResourceViewResolver也就自然没有作用了;
如果要返回到指定的页面,则需要用@Controller配合视图解析器InternalResourceViewResolver;
如果需要返回JSON、XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

@GetMapping() 用来作用在类上,处理get请求 ,括号中可以加传的参数值,一般是id,例如

@GetMapping("/{id}"),用于查询,用于传递多个值时,用@GetMapping("/{id}/{name}")

@PostMapping 处理post请求 用于 添加

@DeleteMapping 用来处理delete请求,用于删除

@PutMapping 用来处理put请求 一般用来修改,

      ------@Patchmapping 是对put方式的一种补充,put是对整体进行更新,patch是对局部进行更新。

@PreAuthorize 用在方法上,在执行方法前,进行权限验证,支持Spring EL表达式,但是只有在

@EnableGlobalMethodSecurity(prePostEnabled=true)的时候,@PreAuthorize才可以使用,

@PathVariable 只支持一个属性 value,类型是String,代表绑定的属性名称,用来拿,url中的动态参数

@JsonInclude(JsonInclude.Include.NON_NULL) :在实体类上使用,就是前端要数据时,返回一个对象,但是只要用户名和密码,然后其他的为空,这时候可以使用此注解,就是空不过去了,不为空的数据可以过去

@MapperScan(basePackages={"写到包名,不用写到类名"}),这个是用来springboot创建项目的时候,配置mapper文件的

@Qualifier("XXX")      qualifier的作用是排除掉不匹配的Bean,qualifier 是限制,是约束,是把范围变小,而不是什么"按名字去查找"之类的,单独使用 qualifier 没有一点作用。大致是这样,首先你先根据某些条件找到了若干Bean,然后由于指定了qualifier 所以根据 qualifier 排除掉一些Bean,现在还剩下若干Bean。(至于怎么处理剩下的若干 Bean,和 qualifier 无关了)

Bean 如何符合 qualifier 限制呢?

目标bean上有这个注解

@Async()       @Async一般注解在方法上,用于实现方法的异步:方法调用者立即返回,待调用的方法提交给Spring的线程池执行。@Async也可以注解在类上,等价于在类中的所有方法上添加该注解。需要注意@Async只对Spring管理的对象生效。

Spring AMQP框架注解

@RabbitListener 是Spring AMQP框架中的一个注解,用于在Spring应用程序中声明消息监听器。该注解可以应用在方法级别上,并且需要指定要监听的队列或者队列的名称。当消息到达队列时,Spring AMQP将自动调用被@RabbitListener注解的方法,并将消息内容作为参数传递进来。

配置类注解

@configurationProperties:只要在 Bean (类)上添加上了这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到 Bean 中。

使用这个注解要加入Maven 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

 如果是Gradle依赖

使用 Gradle,应在配置中声明依赖项annotationProcessor,如以下示例所示:

dependencies {
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
}
如果您使用additional-spring-configuration-metadata.json文件,compileJava则应将任务配置为依赖于该processResources任务,如以下示例所示:

compileJava.inputs.files(processResources)
此依赖性确保注释处理器在编译期间运行时附加元数据可用。

@value: 将配置文件中的键对应的值  分配给其带注解的属性。                                                    外部的值动态注入到 Bean 中,在 @Value 注解中,可以使${} 与 #{} 

@Value("${}"):可以获取对应属性文件中定义的属性值。                                                  @Value("#{}"):表示 SpEl表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。

详情@Value()的使用,请移步

元注解:

@Retention应用到一个注解上用于说明该注解的生命周期,取值如下:

1、RetentionPolicy.SOURCE  注解只在源码阶段保留,在编译阶段进行编译时它将被丢弃忽视。

2、RetentionPolicy.CLASS   注解只被保留到编译进行的时候,它并不会被加载到JVM中,“默认方式”。

3、RetentionPolicy.RUNTIME  注解可以保留到程序运行的时候,它会被加载进入到JVM中,所以在程序运行时可以获取到它们。

@Documented 用于指定被该注解将被javadoc工具提取文档。

@Target 用于指定被修饰的注解能用于哪些元素的修饰

@Inherited修饰的注解在父类中使用,假设子类没有使用任何注解将继承父类的注解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值