springboot注解详解,springboot常用注解和用法
00-1010 1概述2常见注意事项
目录
IOC是Spring最重要的功能之一,就是将Bean初始加载到容器中。如何将Bean加载到容器中可以使用Spring注释或Spring XML配置。
简而言之,注释本身没有业务功能。和xml一样,它也是一种元数据。元数据是解释数据的数据,称为配置。
1 概述
@组件
表示一个带注释的类是一个“组件”,成为一个由Spring管理的Bean。当使用基于注释的配置和类路径扫描时,这些类被视为自动检测的候选。@Component也是元注释。
元注释实际上是一种可以被注释到其他注释的注释。被标注的标注称为复合标注,具有元标注的功能。
@服务
Composition(组合了@Component注释),应用于服务层(业务逻辑层)。
@仓库
Composition(组合了@Component注释),应用于dao层(数据访问层)。
@控制器
Composition(组合@Component注释)应用于MVC层(控制层)。DispatcherServlet将自动扫描用该注释注释的类,然后将web请求映射到用@RequestMapping注释的方法。
@RequestMapping
用于映射Web请求,包括访问路径和参数。(在类或方法上)
@ResponseBody
annotation的作用是通过合适的转换器将控制器的方法返回的对象转换成指定的格式,然后写入响应对象的主体区域,通常用于返回JSON数据或XML数据。
注意:使用该注释后,数据将直接写入输入流而不是视图处理器,其效果相当于通过响应对象输出指定格式的数据。
@请求体
将HTTP请求正文插入到方法中,并使用适当的HttpMessageConverter将请求正文写入到对象中。
角色:
批注用于读取请求请求的正文数据,用默认配置的HttpMessageConverter解析,然后将相应的数据绑定到要返回的对象上;然后将HttpMessageConverter返回的对象数据绑定到控制器中方法的参数。使用时间
GET,POST,根据请求头Content-Type的值来判断3360。
application/x-www-form-urlencoded,可选(即不是必须的,因为本例中的数据@RequestParam,@ModelAttribute也可以处理,当然@RequestBody也可以处理)。无法处理的Multipart/form-data(也就是说,无法用@RequestBody处理这种格式的数据)。其他格式必须是(其他格式包括Application/JSON,Application/XML等。).这些数据格式必须由@RequestBody处理。)通过PUT提交时,通过请求头Content-Type的值来判断。
application/x-www-form-urlencoded,必须是;无法处理多部分/格式数据;其他格式,必须
例如:
@ request mapping(value= User/log in )@ response body//将ajax(datas)发出的请求写入用户对象{//中的公共用户登录(@ requestbodyuseruser)这样就不会被解析为跳转路径,而是直接将用户对象写入HTTP响应体返回User;@路径变量
用于接收路径参数,如@ RequestMapping声明的路径("/hello/{name} ")。您可以在释放参数中的注释之前获取该值,这通常用作Restful接口实现方法。
@RestController
这个标注是组合标注,相当于@Controller和@ResponseBody的组合。注释在类上,这意味着这个控制器的所有方法默认都是用@ResponseBody添加的。
@ExceptionHandler
用于全局处理控制器中的异常。为什么会有这个标注?原因是:
什么异常这么广泛,直接把所有的异常信息都扔给用户是非常不友好的。在交易管理中,如果我们自己决定
义的异常继承的是Exception,则事务无效。如果我们是继承RuntimeException,则不会出现这个问题。@ModelAttribute
本来的作用是绑定键值对到 Model 里,在 @ControllerAdvice 中是让全局的@RequestMapping都能获得在此处设置的键值对。
@Autowired
可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,@Autowired标注可以放在成员变量上,也可以放在成员变量的set方法上,也可以放在任意方法上表示,自动执行当前方法,如果方法有参数,会在IOC容器中自动寻找同类型参数为其传值。
注意:@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier使用;
@Configuration
声明当前类是一个配置类(相当于一个Spring配置的xml文件)。
@Bean
注解在方法上,声明当前方法的返回值为一个Bean。返回的Bean对应的类中可以定义init()方法和destroy()方法,然后在@Bean(initMethod=init,destroyMethod=destroy)定义,在构造之后执行init,在销毁之前执行destroy。
@ComponentScan
自动扫描指定包下所有使用@Service、@Component、@Controller、@Repository的类并注册。
@Aspect
声明一个切面(类上) 使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
@After :在方法执行之后执行(方法上)。@Before: 在方法执行之前执行(方法上)。@Around: 在方法执行之前与之后执行(方法上)。@PointCut: 声明切点 在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持。AspectJ静态编译织入(Aspect for java),他其实是一套独立的面向切面编程的解决方案。Spring中虽然使用了Aspect的Annotation,但是并没有使用它的编译器和织入器。@Scope
定义我们采用什么模式去创建Bean(方法上,得有@Bean) 其设置类型包括:
Singleton (单例,一个Spring容器中只有一个bean实例,默认模式)Prototype(每次调用新建一个bean)Request (web项目中,给每个http request新建一个bean)Session(web项目中,给每个http session新建一个bean)GlobalSession(给每一个 global http session新建一个Bean实例)。
@Scope("prototype")//多实例,IOC容器启动创建的时候,并不会创建对象放在容器在容器当中,当你需要的时候,需要从容器当中取该对象的时候,就会创建。@Scope("singleton")//单实例 IOC容器启动的时候就会调用方法创建对象,以后每次获取都是从容器当中拿同一个对象(map当中)。@Scope("request")//同一个请求创建一个实例@Scope("session")//同一个session创建一个实例
@PostConstruct
标注在方法上,该方法在构造函数执行完成之后执行。
@PreDestory
标注在方法上,该方法在对象销毁之前执行。
@Value
经常与Sping EL表达式语言一起使用,注入普通字符,系统属性,表达式运算结果,其他Bean的属性,文件内容,网址请求内容,配置文件属性值等。
@EnableAsync
配置类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口。
@Async
在实际执行的bean方法使用该注解来申明其是一个异步任务(方法上或类上所有的方法都将异步,需要@EnableAsync开启异步任务)
@EnableScheduling
在配置类上使用,开启计划任务的支持。
@Scheduled
来申明这是一个任务,包括cron,fixDelay,fixRate等类型。
@Enable*注解说明
这些注解主要用来开启对xxx的支持。 @EnableAspectJAutoProxy 开启对AspectJ自动代理的支持。
@EnableAsync: 开启异步方法的支持。@EnableScheduling: 开启计划任务的支持。@EnableWebMvc :开启Web MVC的配置支持。@EnableConfigurationProperties :开启对@ConfigurationProperties注解配置Bean的支持。@EnableJpaRepositories:开启对SpringData JPA Repository的支持。@EnableTransactionManagement:开启注解式事务的支持。@EnableTransactionManagement: 开启注解式事务的支持。@EnableCaching: 开启注解式的缓存支持。到此这篇关于SpringBoot详细列举常用注解的使用的文章就介绍到这了,更多相关SpringBoot注解内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。