spring boot 第二章 常用注解

2018-07-27  本文已影响0人  Ace_Wang

1、@SpringBootApplication

在使用 Springboot 框架进行开发的时候,通常我们会在 main 函数上添加 @SpringBootApplication 注解

首先看一下“SpringBootApplication”源码,

@SpringBootApplication是@Configuration@EnableAutoConfiguration@ComponentScan三个标签功能的集合

@Configuration:表示将该类作用springboot配置文件类。

@EnableAutoConfiguration:表示程序启动时,自动加载springboot默认的配置。

@ComponentScan:表示程序启动是,自动扫描当前包及子包下所有类。

2、@EnableDiscoveryClient  && @EnableEurekaClient

@EnableDiscoveryClient与@EnableEurekaClient都是服务发现的注解,区别在于@EnableDiscoveryClient基于spring-cloud-commons, @EnableEurekaClient基于spring-cloud-netflix。

就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient,如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。

3、@EnableScheduling

通过@EnableScheduling注解开启对计划任务的支持

4、@MapperScan

通过使用@MapperScan可以指定要扫描的Mapper类的包的路径

5、@EnableSwagger2Doc

    用于自动生成api文档

6、@target(用于定义注解)

用于设定注解使用范围

7、@Retention(用于定义注解)

    定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。使用这个meta-Annotation可以对 Annotation的“生命周期”限制。

8、@Documented注解

    @Documented注解表明这个注释是由 javadoc记录的

9、@Inherited

@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。 

如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

10、@EnableTransactionManagement

spring boot 的事务管理标签

11、@Service、@Controller、@Repository

@Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注

13、@table  、@Id、@Column

    @table实体类映射数据库表,@Id映射主键,@Column映射列

14、@RequestMapping

@RequestMapping是一个用来处理请求地址映射的注解,可用于类跟方法

15、@Autowired

自动注入,相当于xxx x = new xxx();与他类似的标签还有@Resource,两者之间的区别就不细讲了

16、@Responsebody

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。 

如果返回值是html标签的页面,就不要使用他;

17、@PathVariable、@RequestParam, @RequestBody

三者都是获取发送参数的方法,区别在于:

@Pathvariable

当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

@RequestParam 

A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;

B)用来处理Content-Type: 为application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

@RequestBody

该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;

它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。

因为配置有FormHttpMessageConverter,所以也可以用来处理application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap里,这种情况在某些特殊需求下使用

上一篇下一篇

猜你喜欢

热点阅读