《Spring》-----容器的注解
来源:互联网 发布:淘宝海外代购要身份证 编辑:程序博客网 时间:2024/05/18 18:02
前言
- Spring容器的注解帮助我们提升很大的工作效率,我们从此不用在去配置相关的bean。这些工作可以完全让Spring去管理甚至去创建。下面小编带着读者去解析Spring一些相关注解的原理。
1、依赖注入的注解
- @Resource注解:
- 此注解严格来说是java的注解,并不是Spring开发的。要想了解此注解是怎么用的,请看下面的例子。
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <bean id="person" class="com.spring.di.annotation.Person"></bean> <bean id="student" class="com.spring.di.annotation.Student"></bean> <!-- 启动依赖注入的注解解析器 --> <context:annotation-config></context:annotation-config>
person类
public class Person { @Resource(name="student") private Student student; public Student getStudent() { return student; }}
student类
public class Student { public void say(){ System.out.println("student"); }}
@Resource注解原理解析
当启动spring容器的时候,Spring会创建两个对象;当spring容器解析到 <context:annotation-config></context:annotation-config>
的时候,spring容器会在spring容器管理的bean的范围内查找这些类的属性上面是否加了@Resource注解,如果某类加了@Resource注解,则spring会解析@Resource注解的name属性:
1、如果name属性为”“,spring容器会得到该注解所在的属性的名称和spring容器中的id做匹配,如果匹配成功,则赋值;如果匹配不成功,则按照类型进行匹配。
2、如果name属性的值不为”“, 则按照name属性的值和spring的id做匹配,如果匹配成功,则赋值,不成功,则报错。
@Autowired注解:
- 按照类型匹配的注解,这是Spring开发的注解,比如,person的类型如下
class="com.spring.di.annotation.Person"
@Qualifier注解:
- 按照id进行匹配的注解。比如说`id=”person”
`
2、扫描类的注解
@Component注解:
- 此注解将Spring容器中的bean当成一个组件,将扫描到带有@Component的类注入到Spring容器中。比如,配置文件的配置如下所示。
<!-- component:把一个类放入到spring容器中,该类就是一个component 在base-package指定的包及子包下扫描所有的类 --> <context:component-scan basepackage="com.spring.scan"> </context:component-scan>
Component注解原理解析
当spring容器启动后,spring容器解析到配置文件
<context:component-scan basepackage="com.spring.scan"> </context:component-scan>
时,就会在上面指定的包及子包中扫描所有的类,看哪些类上面有@Component注解,如果有该注解,就会在Spring容器中自动创建该类的bean,比如说person类上面加了该注解,则Spring会这样创建bean:
<bean id="person" class"..."/>
其中id的值是把类的第一个字母变成小写,而其他字母不变。最后再按照@Resource注解的规则进行赋值,或者按照其它注解进行赋值。
小结
- 其实这两种注解在程序执行的效率上都不如原始xml中已经写好的那些bean,因为这些注解都需要Spring进行扫描和赋值啊,但是对于Spring配置文件来说,里面的内容大大的减少了,从而开发的效率提高了。
1 0
- 《Spring》-----容器的注解
- Spring之基于注解的容器配置
- Spring IOC容器-注解的方式
- spring框架基于注解的容器配置
- [Spring]IoC容器之进击的注解
- 模拟spring的注解,制作自己的小容器
- Spring容器注解详解<四>
- 【理论】Spring IOC容器:注解
- 利用注解配置Spring容器
- spring中基于java的容器注解(11)
- spring中基于java的容器注解(12)
- Spring中基于java容器的注解@Bean
- Spring IOC容器-注解的方式【更简化】
- Spring学习笔记(12.基于java的容器注解)
- spring容器启动会默认执行的注解
- Spring入门(基于Java的容器注解之@Bean)
- 使用Spring注解来构造IoC容器
- spring注解和springmvc容器初始化过程
- 二叉搜索树的插入与删除操作
- Linux安装openssh详细步骤及遇到问题的解决方案
- 二维码(QR code)基本结构及生成原理
- 算法在计算机中的作用
- 第十二节 shell编写监控脚本
- 《Spring》-----容器的注解
- python装饰器的执行过程
- Learn Java 接口
- BootStrap组件
- 【51单片机学习过程记录】16 中断之 串口中断的应用2(中断方式)
- 微信小程序开发指南,含最新api
- Install TensorFlow(V0.11.0) on Mac OSX (Sierra)
- approximate CBR stream
- ubuntu上建立交叉编译环境,在qemu上运行ARM镜像