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里,这种情况在某些特殊需求下使用
网友评论