springboot常用注解分类整理
本文整理了springboot常用的注解,以方便记忆和使用。在更好的理解该部分内容之前应该对Java注解和spring 控制反转(IoC)有一定的了解。
@SpringBootApplication//这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。
@EnableAutoConfiguration//允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。
@ComponentScan//组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。
@Configuration//用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。
entity层
@Entity//表面该类是一个资源实体类
@Table(name = "artical")//关联的表是artical,在类名和数据名对应不上时使用
//@JsonIgnoreProperties 作用是 json 序列化时忽略 bean 中的一些不需要转化的属性
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "hander", "fieldHandler"})
//上面三个注解作用于实体类上
mapper(DAO)层
@Mapper //是 Mybatis 的注解,和 Spring 没有关系。使用mybatis时一定要有,否则 Mybatis 找不到 mapper。
@Repository //用于标注数据访问组件,即DAO组件,是 Spring 的注解,用于声明一个 Bean。@Repository 可有可无,可以消去依赖注入的报错信息
仅仅使用@Mapper注解,我们会发现,在其他变量中依赖注入,IDEA 会提示错误,但是不影响运行。因为我们没有显式标注这是一个 Bean,IDEA 认为运行的时候会找不到实例注入,所以提示我们错误。尽管这个错误提示并不影响运行,但是看起来很不舒服,所以我们可以在对应的接口上用该注解添加 bean 的声明
service层
@Service //对应的是业务层Bean
//@Service("userService")注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注入给Action:在Action只需要声明一个名字叫“userService”的变量来接收由Spring注入的"userService"即可
controller层
@Controller //即在Controller类中,若想返回jsp或html页面,则不能用@RestController,只能使用@Controller
@RestController //@RestController 相当于 @Controller + @ResponseBody;
@RequestMapping //一个用来处理请求地址映射的注解;提供路由信息,负责URL到Controller中的具体函数的映射,可用于类或方法上。
@ResponseBody //表示该方法的返回结果直接写入HTTP response body中
@RequestParam //获取查询参数。即url?name=这种形式
@PathVariable //获取路径参数。即url/{id}这种形式。
其他实现bean注入的注解:
@Component //spring中的一个注解,它的作用就是实现bean的注入。(@Service,@Repository,@Controller是该注解的衍生注解)
@bean //@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。注解@Bean被声明在方法上,方法都需要有一个返回类型,而这个类型就是注册到IOC容器的类型。
@Import //这种方法最为直接,直接把指定的类型注册到IOC容器里,成为一个java bean,可以把@Import放在程序的入口,它在程序启动时自动完成注册bean的过程。
依赖注入:
@AutoWired //
@Resource(name=”name”,type=”type”) //没有括号内内容的话,默认byName。与@Autowired干类似的事;
//相同点:@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。
//不通点:
//1、提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;@Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。
//2、注入方式:@Autowired只按照byType 注入;@Resource默认按byName自动注入,也提供按照byType 注入;
//3、属性:@Autowired按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用;@Resource有两个中重要的属性:name和type。name属性指定byName,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。
参考博客:https://blog.51cto.com/qiangmzsx/1359952