SpringBoot常⽤注解及作⽤
1、@SpringBootApplication 注解:
@SpringBootApplication 注解是⼀个复合型注解,包含了
@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan这三个注解。
这三个注解的作⽤是:@SpringBootConfiguration:标注当前类是配置类,这个注解继承⾃@Configuration。并会将当前类内声明的⼀个或多个以@Bean注解标记的⽅法的实例纳⼊到srping容器中,并且实例名就是⽅法名。返回值就是类型。让我们再也不⽤注册⽂件,只需要在配置类上⾯加上注解,在⽅法名上加上@bean这个注解,就可以⾃动注册。
@EnableAutoConfiguration:是⾃动配置的注解,这个注解会根据我们添加的组件jar来完成⼀些默认配置,我们做微服时会添加spring-boot-starter-web这个组件jar的pom依赖,这样配置会默认配置springmvc 和tomcat
@ComponentScan:扫描当前包下的⼦包下被@Component,@Controller,@Service,@Repository注解标记的类并纳⼊到spring容器中进⾏管理。等价于<context:component-scan>的xml配置⽂件中的配置项。
springboot框架的作用⼤多数情况下,这三个注解会同时使⽤,基于最佳实践,这三个注解就被做了包装,包装成了@SpringBootApplication注解。
@SpringBootApplication注解。
2、@ServletComponentScan:Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解⾃动注册,这样通过注解servlet ,,的功能⽽⽆需其他配置,所以这次相中使⽤到了filter的实现,⽤到了这个注解。
3、@MapperScan:spring-boot⽀持mybatis组件的⼀个注解,通过此注解指定mybatis接⼝类的路径,即可完成对mybatis接⼝的扫描。它和@mapper注解是⼀样的作⽤,不同的地⽅是扫描⼊⼝不⼀样。@mapper需要加在每⼀个mapper接⼝类上⾯。所以⼤多数情况下,都是在规划好⼯程⽬录之后,通过@MapperScan注解配置路径完成mapper接⼝的注⼊。
添加mybatis相应组建依赖之后。就可以使⽤该注解。
4、资源导⼊注解:@ImportResource @Import @PropertySource,这三个注解都是⽤来导⼊⾃定义的⼀些配置⽂件。
@ImportResource (locations={})导⼊其他xml配置⽂件,需要标注在主配置类上,导⼊property的配置⽂件@PropertySource 指定⽂件路径,相当于使⽤spring的<importresource/>标签来完成配置项的引⼊。
@import注解是⼀个可以将普通类导⼊到spring容器中做管理
· controller 层
来配合使⽤拦截请求,如果不在method中注明请求的⽅式,
@RequestMapping来配合使⽤拦截请求,如果不在method中注明请求的⽅式,1、@Controller 表明这个类是⼀个控制器类,和
1、@Controller 表明这个类是⼀个控制器类,和@RequestMapping
默认是拦截get和post请求。这样请求会完成后转向⼀个视图解析器。但是在⼤多微服务搭建的时候,前后端会做分离。所以请求后端只关注数据处理,后端返回json数据的话,需要配合@ResponseBody注解来完成。
这样⼀个只需要返回数据的接⼝就需要3个注解来完成,⼤多情况我们都是需要返回数据。也是基于最佳实践,所以将这三个注解进⼀步整合。
@RestController 是@Controller 和@ResponseBody的结合,⼀个类被加上@RestController 注解,数据接⼝中就不再需要添加@ResponseBody。更加简洁。
· servcie层注解
1、@Service:这个注解⽤来标记业务层的组件,我们会将业务逻辑处理的类都会加上这个注解交给spring容器。事务的切⾯也会配置在这⼀层。当让 这个注解不是⼀定要⽤。有个泛指组件的注解,当我们不能确定具体作⽤的时候 可以⽤泛指组件的注解托付给spring 容器。
2、@Resource:@Resource和@Autowired⼀样都可以⽤来装配bean,都可以标注字段上,或者⽅法上。 @resource注解不是spring提供的,是属于J2EE规范的注解。
两个之前的区别就是匹配⽅式上有点不同,@Resource默认按照名称⽅式进⾏bean匹配,@Autowired默认按照类型⽅式进⾏bean 匹配。
· 持久层注解
1、@Repository:@Repository注解类作为DAO对象,管理操作数据库的对象。
总得来看,@Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所扫描并注⼊到spring容器来进⾏管理
@Component是通⽤注解,其他三个注解是这个注解的拓展,并且具有了特定的功能。
通过这些注解的分层管理,就能将请求处理,义务逻辑处理,数据库操作处理分离出来,为代码解耦,也⽅便了以后项⽬的维护和开发。
所以我们在正常开发中,如果能⽤@Service, @Controller, @Repository其中⼀个标注这个类的定位的时候,就不要⽤
@Component来标注。
2、@Transactional: 通过这个注解可以声明事务,可以添加在类上或者⽅法上。
在spring boot中 不⽤再单独配置事务管理,⼀般情况是我们会在servcie层添加了事务注解,即可开启事务。要注意的是,事务的开启只能在public ⽅法上。并且主要事务切⾯的回滚条件。正常我们配置rollbackfor exception时 ,如果在⽅法⾥捕获了异常就会导致事务切⾯配置的失效。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论