springboot注解以及一些晦涩难理解的点介绍

  • @Validated 用于注入数值校验的注解(JSR303数据校验)

  • @PropertySource 用于加载指定的配置文件,例如@PropertySource(value = {"classpath:person.properties"})

  • @ImportResource 用于导入Spring的配置文件,让配置文件里面的内容生效

    Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,它也不能自动识别;
    想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上,例如:@ImportResource(locations = {"classpath:beans.xml"})

  • @Configuration 用于指明当前类是一个配置类;就是来替代之前的Spring配置文件

  • @Bean 用于给容器中添加组件, @Bean标注在方法上,表示将这个方法的返回值加到容器中;容器中这个组件默认的id就是方法名

  • @Conditional 条件注解,用于判断当前的配置类是否满足条件,如果满足条件那么此配置类就是生效了。

  • @ConfigurationProperties(prefix = "spring.http.encoding") 用于从配置文件中获取指定的值和bean的属性进行绑定


    精髓
    1)、SpringBoot启动会加载大量的自动配置类
    2)、我们看我们需要的功能有没有SpringBoot默认写好的自动配置类;
    3)、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置
    4)、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值;

  • JNDI Java 命名与目录接口(Java Naming and Directory Interface) 参看:https://blog.csdn.net/wn084/article/details/80729230 (将数据库资源与程序的紧耦合分割开来,不需要了解很多的底层实现,只需要根据名字调用即可,修改起来的也非常方便)


spring常见注解汇总方便后面查询

  • @Autowired:自动装配注解。默认按类型进行匹配,它在容器中查找匹配的bean,当且仅有一个匹配的bean时,spring将其注入到@Autowired标注的变量中。自动装配注解默认的是去容器中找bean,如果没有找到,将会报错,如果想让它既是没有找到也不报错,那么只需要将required属性设置为false即可,即@Autowired(required=false),这样设置过后,找不到则会是null。

  • @Qualifier:指定注入bean的名称,按照名称来进行注入。它和@Autowired注解一起联合使用,用于注入特定名称的bean。

  • @Resource注解:它和自动注解非常类似,只不过resource注解是按照类型和名称去进行装配的,而Autowired是自动进行装配。

    它的详细用法:

    ​ 1.@Resource后面没有任何内容时,默认通过name属性去匹配bean,找不到在按照type去匹配。

    ​ 2.指定了name或者type则根据指定的名称或者type去匹配。

    ​ 3.指定了name和type则根据指定的name和type去匹配bean,任意一个没有匹配成功都失败。

    @Autowired和@Resource的区别

    ​ 1.@Autowired默认按照type方式去匹配bean,@Resource默认按照name方式去匹配bean。

    ​ 2.@Autowired是spring的注解,而@Resource是j2ee的注解。

    Spring是属于第三方的,而j2ee是java自己的东西,因此在使用这两个注解的时候建议使用@Resource注解,因为这样可以减少和Spring之间的耦合。

  • @Service注解:直接将一个java类注入到spring容器中,它标注在xx.java上时主要做了两件事:1.声明这个类是一个bean,然后其他类就可以通过自动注入的方式去引入;2.这个类在bean中的名字就是类名小写。

    在使用配置文件时,使用注解时需要<context:component-scan base-package="包名" >来表示我要使用注解了。不然的话无法识别注解。

  • @Component:组件注解,将它标注在类上就表示它是一个bean了。

  • @Controller:控制器注解,标注在一个类上,就表示它是一个控制器类。

  • @Service:用于标注在业务层,表示他是一个业务bean。

  • @Repository:用于标注在数据访问层的bean。

  • @Configuration :把一个类作为一个ioc容器,它的某个方法上如果标注了@Bean,那么就会把他作为一个spring容器中的bean。

  • @Scope:作用域注解。

  • @lazy(true):表示延迟加载

springboot的一些注解的更多相关文章

  1. springboot整合mybaits注解开发

    springboot整合mybaits注解开发时,返回json或者map对象时,如果一个字段的value为空,需要更改springboot的配置文件 mybatis: configuration: c ...

  2. SpringBoot 中常用注解

    本篇博文将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注 ...

  3. SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍

    SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍 本篇博文将介绍几种如何处理url中的参数的注解@PathVaribale/@Requ ...

  4. springboot整合redis(注解形式)

    springboot整合redis(注解形式) 准备工作 springboot通常整合redis,采用的是RedisTemplate的形式,除了这种形式以外,还有另外一种形式去整合,即采用spring ...

  5. SpringBoot整合Mybatis注解版---update出现org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]

    SpringBoot整合Mybatis注解版---update时出现的问题 问题描述: 1.sql建表语句 DROP TABLE IF EXISTS `department`; CREATE TABL ...

  6. SpringBoot使用Mybatis注解进行一对多和多对多查询(2)

    SpringBoot使用Mybatis注解进行一对多和多对多查询 GitHub的完整示例项目地址kingboy-springboot-data 一.模拟的业务查询 系统中的用户user都有唯一对应的地 ...

  7. SpringBoot 中常用注解@Controller/@RestController/@RequestMapping的区别

    SpringBoot中常用注解@Controller/@RestController/@RequestMapping的区别 @Controller 处理http请求 @Controller //@Re ...

  8. SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍

    原文 SpringBoot 中常用注解 @Controller/@RestController/@RequestMapping介绍 @Controller 处理http请求 @Controller / ...

  9. springboot + 拦截器 + 注解 实现自定义权限验证

    springboot + 拦截器 + 注解 实现自定义权限验证最近用到一种前端模板技术:jtwig,在权限控制上没有用springSecurity.因此用拦截器和注解结合实现了权限控制. 1.1 定义 ...

  10. springboot整合mybatis(注解)

    springboot整合mybatis(注解) 1.pom.xml: <?xml version="1.0" encoding="UTF-8"?> ...

随机推荐

  1. html上传图片后,在页面显示上传的图片

    html上传图片后,在页面显示上传的图片 1.html <form class="container" enctype="multipart/form-data&q ...

  2. leetcode1281 整数的各位积和之差

    class Solution { public: int subtractProductAndSum(int n) { ; ; ){ ; n/=; prod*=r; add+=r; } int res ...

  3. MySQL 插件之 连接控制插件(Connection-Control)

    目录 插件介绍 插件安装 插件配置 插件介绍 MySQL 5.7.17 以后提供了Connection-Control插件用来控制客户端在登录操作连续失败一定次数后的响应的延迟.该插件可有效的防止客户 ...

  4. Message 消息提示

    常用于主动操作后的反馈提示.与 Notification 的区别是后者更多用于系统级通知的被动提醒. 基础用法 从顶部出现,3 秒后自动消失. Message 在配置上与 Notification 非 ...

  5. silverlight开发实例(Prism+MVVM+RIA)(二)--创建shell及用户登录

    在上篇基本说清了本项目的基本框架,下面开始说下项目的加载和shell.开始之前在建立EF时出现了一个问题,我在数据库中建立了视图,而在EF导入视图时出现因无法匹配主键导致无法导入视图的问题,检查发现是 ...

  6. python的XML解析

    http://www.jb51.net/article/63780.htm http://www.runoob.com/python/python-xml.html http://kb.cnblogs ...

  7. C++的学习笔记1

    一:      为了惯例具有指针成员的类,必须定义三个复制控制成员:复制构造函数.赋值操作符和析构函数.  复制构造函数分配新元素并从被复制对象处复制值,赋值操作符撤销所保存的原对象并从右操作数向左操 ...

  8. Java爬虫爬取京东商品信息

    以下内容转载于<https://www.cnblogs.com/zhuangbiing/p/9194994.html>,在此仅供学习借鉴只用. Maven地址 <dependency ...

  9. Redis 几个类型常用命令

    Redis 字符串(String) 下表列出了常用的 redis 字符串命令: 序号 命令及描述1 SET key value 设置指定 key 的值2 GET key 获取指定 key 的值.3 G ...

  10. MongoDB 走马观花(全面解读篇)(转载)

    MongoDB 走马观花(全面解读篇)(转载)   目录 一.简介 二.基本模型 BSON 数据类型 分布式ID 三.操作语法 四.索引 索引特性 索引分类 索引评估.调优 五.集群 分片机制 副本集 ...