| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> spring中什么是注解?@Autowired的解析、写一个自己的注解(一) -> 正文阅读 |
|
[Java知识库]spring中什么是注解?@Autowired的解析、写一个自己的注解(一) |
目录 java注解在解释spring的注解之前,先了解一下什么是java的注解?:Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java中类、变量、参数、 包等都可以添加注解,java的注解可以通过反射来获取到标注的内容,在编译器生成字节码文件时,标注信息也添加进去。当运行时,JVM可以根据标注信息获取相应的信息。 先给大家介绍一下java中常见的7种注解,这种注解也是spring中的注解的基础!前三个注解是用于代码上的注解,剩下的四个是用于修饰注解!
spring注解然后我们来说一下spring中注解的作用。 spring的重要特征就是控制反转和依赖注入。在spring中,将部分需要创建和生成的类的控制权限交给了spring容器进行管理,这就是控制反转。依赖注入就是将属性和类信息注入给相应的类。而这和我们要使用的注解有什么关系呢? (1)配置文件形式我们知道在出现注解之前,spring实现bean的管理是通过配置文件来实现的,所以我们先设计一个简答的bean来实现一下,如下:结构图在下面,为了方便我把代码放到了一起,实现请对比结构图!
配置文件如下:
?运行结果:
?这就是未使用注解时候,bean的使用方法。 (2)注解形式加入了注解之后,我们会省下配置很多不必要信息的时间。最常用的自动装配的注解@Autowired,用于放置在类上用来修饰。 可以了解一下@Autowired的源码中的注解信息,咱们简单看一个重要的信息
?而@Autowired这个注解对应的,就是我们在chuzhong类中,写的set和get方法,以及配置文件中的property标签的内容,它可以帮我们自动关联bean对象,实现自动装配功能。 ?所以我们使用@Autowired注解之后的类文件和配置文件就变成了如下图,关联的zhangsan和lisi类对象的set和get方法省略,并且配置文件中property中内容省略,但是需要加上component-scan组件扫描配置,因为当出现@Autowired注解之后,会从base-package下查找相应的关联bean对象:? @Autowired的解析我们来分析一下@Autowired中都是什么东西: 1,首先注解是使用@interface修饰的,意味着它实现了 java.lang.annotation.Annotation 接口,使用?@interface修饰才可以生成注解的形式 2,绿色字体的意思,注解依赖是否是必须的,也就是你使用了@Autowired这个注解,那么可以手动配置required,是否使用,默认是写了该注解就是使用 ?3,我们在文章第一段说明了,有四个注解是用来修饰注解的。我用一段来解释一下其中字段的意思。 @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) 表示这个注解是用来修改哪种成员的,如果没有写这个@Target则表示,它可以用在任何地方。然后我们了解一下ElementType这个枚举类中中各个字段的意思。从下面我们可以看出,它可以修饰构造器、方法、参数、成员变量以及注解。所以多个ElementType对应一个注解。 @Retention(RetentionPolicy.RUNTIME)用于指定该注解的生命周期,存活到什么时候,RUNTIME表明存活到运行时,可以反射获取相应的信息。 @Documented文中第一段有说明。 @Autowired的生效流程而@Autowired是如何生效的呢?我引用一下别人的文章:SpringBoot中@Autowired是如何生效的 - 简书,希望大家也可以看一看,我摘重点说一下。下图就是spring启动之后的流程。 ? 首先是AutowiredPorcessor的BeanDefinition的注册
然后是AutowiredProcessor注册为bean
最后是注入
spring的其余注解也可以参考这种形式,逐一进行分析,个人的注解放到(二)中实现。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:22:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |