注解:

1、注解就是为了说明java中的某一个部分的作用(Type)

2、注解都可以用于哪个部门是@Target注解起的作用

3、注解可以标注在ElementType枚举类所指定的位置上

4、

@Documented    //该注解是否出现在帮助文档中

@Retention(RetentionPolicy.RUNTIME) //该注解在java,class和运行时都起作用

@Target(ElementType.ANNOTATION_TYPE)//该注解只能用于注解上

public @interface Target {

ElementType[] value();

}

5、用来解析注解的类成为注解解析器

@Resource注解的使用规则:

1、在spring的配置文件中导入命名空间

xmlns:context="http://www.springframework.org/schema/context"

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd

2、引入注解解析器

<context:annotation-config></context:annotation-config>

3、在spring的配置文件中把bean引入进来

4、在一个类的属性上加

@Resource(name="student_annotation")

private Student student;

从该注解本身

@Target({TYPE, FIELD, METHOD})

@Retention(RUNTIME)

public @interface Resource {

String name() default "";

}

1、该注解可以用于属性上或者方法上,但是一般用户属性上

2、该注解有一个属性name,默认值为""

5、分析整个过程:

1、当启动spring容器的时候,spring容器加载了配置文件

2、在spring配置文件中,只要遇到bean的配置,就会为该bean创建对象

3、在纳入spring容器的范围内查找所有的bean,看哪些bean的属性或者方法上加有@Resource

4、找到@Resource注解以后,判断该注解name的属性是否为""(name没有写)

如果没有写name属性,则会让属性的名称的值和spring中ID的值做匹配,如果匹配成功则赋值

如果匹配不成功,则会按照类型进行匹配,如果匹配不成功,则报错

如果有name属性,则会按照name属性的值和spring的bean中ID进行匹配,匹配成功,则赋值,不成功则报错

类扫描的注解:

1、在spring的配置文件中导入命名空间

xmlns:context="http://www.springframework.org/schema/context"

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd

2、<context:component-scan base-package="cn.itcast.annotation.scan"></context:component-scan>

1、 该注解解析器包含了两个功能:依赖注入和类扫描

2、在base-package包及子包下查找所有的类

3、如果一个类上加了@Component注解,就会进行如下的法则

如果其value属性的值为""

@Component

public class Person {}

==

<bean id="person" class="..Person">

如果其value属性的值不为""

@Component("p")

public class Person {}

==

<bean id="p" class="..Person">

4、按照@Resource的法则再次进行操作

xml与注解:

1、xml书写麻烦,但是效率高

2、注解书写简单,但是效率低

@Resource(name="aa")

==下面是spring提供的注解,上面是jdk提供的注解

@Autowired

@Qualifier(name="aa")

依赖注入

@Resource

@Autowired      

@Qualifier

类扫描

@Component

@Controller

@Repository

@Service

spring注解 di 和 ioc 注解的更多相关文章

  1. Spring源码 05 IOC 注解方式

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  2. 阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类

    注解配置和xml的配置要实现的功能都是一样的.都是要降低程序间的耦合,只不过配置的形式不一样 打包方式改成jar 加入spring 的依赖 复制之前的代码过来 复制到我们新建的工程里 resurces ...

  3. Spring顾问、IOC注解和注解增强

    一.顾问 通知的一种表现方式(顾问包装通知/增强) Advisor: 名称匹配方法: NameMecthMethodPointcutAdvisor 1.定义了一个业务类 package cn.spri ...

  4. Spring总结四:IOC和DI 注解方式

    首先我们要了解注解和xml配置的区别: 作用一样,但是注解写在Bean的上方来代替我们之前在xml文件中所做的bean配置,也就是说我们使用了注解的方式,就不用再xml里面进行配置了,相对来说注解方式 ...

  5. Spring 注解方式 实现 IOC 和 DI

    注:以下所有测试案例(最后一个除外)的测试代码都是同一个: package cn.tedu.test; import org.junit.Test; import org.springframewor ...

  6. Spring知识点总结(三)之注解方式实现IOC和DI

        1. 注解概念        所谓注解就是给程序看的提示信息,很多时候都用来作为轻量级配置的方式.        关于注解的知识点,参看java基础课程中java基础加强部分的内容.    2 ...

  7. Spring入门(二)— IOC注解、Spring测试、AOP入门

    一.Spring整合Servlet背后的细节 1. 为什么要在web.xml中配置listener <listener> <listener-class>org.springf ...

  8. Spring中注解方式实现IOC和AOP

    1.IOC注解 1.1 IOC和DI的注解  IOC: @Component:实现Bean组件的定义 @Repository:用于标注DAO类,功能与@Component作用相当 @Service:用 ...

  9. 【Spring】XML方式实现(无参构造 有参构造)和注解方式实现 IoC

    文章目录 Spring IoC的实现方式 XML方式实现 通过无参构造方法来创建 1.编写一个User实体类 2.编写我们的spring文件 3.测试类 UserTest.java 4.测试结果 通过 ...

随机推荐

  1. Spring3.1.2与Hibernate4.1.8整合

    整合Spring3.1.2 与 Hibernate 4.1.8 首先准备整合jar: Spring3.1.2: org.springframework.aop-3.1.2.RELEASE.jar or ...

  2. IIS HTTPS 禁用不安全的SSL2.0

    禁用: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols 验证:

  3. [Android UI] ActionBar 自定义属性

    actionbar 默认放在顶部, 如果在application或者activity中加入 android:uiOptions="splitActionBarWhenNarrow" ...

  4. spring事务管理器的源码和理解

    原文出处: xieyu_zy 以前说了大多的原理,今天来说下spring的事务管理器的实现过程,顺带源码干货带上. 其实这个文章唯一的就是带着看看代码,但是前提你要懂得动态代理以及字节码增强方面的知识 ...

  5. java静态代码分析工具infer

    infer是一个静态代码分析工具,探测bugs. 主要支持Java.C/C++ 安装:brew install infer 在线展示:https://codeboard.io/projects/115 ...

  6. DotNetBar中dotNetBarManager设置窗口 实现单文档视图界面

    本人想设计一个但文档视图的界面: |--------------------------------------------------------------- |   Ribbon Bar |-- ...

  7. UVA 11464 Even Parity (独特思路)

    题意:有一个n*n的01矩阵,任务是把尽可能少的0变成1,使得每个元素的上.下.左.右元素之和为偶数. 思路:很容易想到的思路是枚举每个点是0还是1,因为n<=15,复杂度就是2^225显然TL ...

  8. (转)在ios android设备上使用 Protobuf (使用dll方式)

    自:http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http:/ ...

  9. [mysql] C++操作mysql方法总结(1)

    From: http://www.cnblogs.com/magicsoar/p/3817518.html C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作 ...

  10. [Functional Programming] mapReduce over Async operations and fanout results in Pair(rejected, resolved) (fanout, flip, mapReduce)

    This post is similar to previous post. The difference is in this post, we are going to see how to ha ...