当前位置: 首页 > 编程笔记 >

Spring注解实现自动装配过程解析

姬烨磊
2023-03-14
本文向大家介绍Spring注解实现自动装配过程解析,包括了Spring注解实现自动装配过程解析的使用技巧和注意事项,需要的朋友参考一下

IOC容器中学习相关注解(常用)

1. @Autowireda.作用对象:(官网解释)

1. You can apply the @Autowired annotation to constructors:

2.you can also apply the @Autowired annotation to "traditional" setter methods:

3.You can also apply the annotation to methods with arbitrary names and/or multiple arguments:

4.You can apply @Autowired to fields as well and even mix it with constructors:

5.It is also possible to provide all beans of a particular type from the ApplicationContext by adding the annotation to a field or method that expects an array of that type:

6.Even typed Maps can be autowired as long as the expected key type is String. The Map values will contain all beans of the expected type, and the keys will contain the corresponding bean names:等

总结一下就是: 可以在构造器,set方法,任意方法和属性上,数组上,String类型的Map上等。

Notes:1.@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false。

2.可以与@qualifier 共同使用, 当对象类型和名字发生冲突时,该注解可用于指定特定的对象。

 @Autowired()
 @Qualifier("cat")

可以找到id="cat"的beanb.功能:它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。通过 @Autowired的使用来消除 set ,get方法。2.@Resourcea.功能: @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入

@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

3.@Requireda.功能:@Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。下面显示的是一个使用 @Required 注释的示例

这有一个很好的解释和例子关于@Required注解

使用@Autowired后的优点

原来我们需要手动注入之后才可以使用employee对象:

<bean> <property name="employee" ref="employee"/>

若没有进行手动注入,不会从测试代码中 获取到employee对象。

使用@Autowired之后

不需要手动注入。

<bean id="car" class="com.ding.pojo.Car"/>

只用在属性上进行@Autowired注释标注

在测试类中即可直接调用:

public class MyTest {
  public static void main(String[] args) {
   
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  
    Car car = (Car) context.getBean("car");
    car.getOwner().MyEmployment();
  
  }
}

系统首先根据 bean中class类型进行确认,再和bean中id名进行确认,最后确定所定的注入对象。 若多个bean 名字不同,且类型相同则该注释失效。(可使用@Qualifier 进行唯一指定)

例如:

<bean id="owner22" class="com.ding.pojo.owner"/>
   <bean id="owner11" class="com.ding.pojo.owner"/>

运行相同代码会报如下错误:

此时加上@Qualifier注释如下,代码可正常编译:

运行结果:

如分享内容中有问题的地方,还望您多加指出,感谢您的浏览。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Spring自动装配Bean实现过程详解,包括了Spring自动装配Bean实现过程详解的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring自动装配Bean实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 要使用自动装配,就需要配置 <bean> 元素的 autowire 属性。autowire 属性有

  • 主要内容:1. 引入依赖,2. 开启组件扫描,3. 使用注解定义 Bean,4. 基于注解方式实现依赖注入,示例从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下,在源代码中嵌入补充信息。 Spring 从 2.5 版本开始提供了对注解技术的全面支持,我们可以使用注解来实现自动装配,简化 Spring 的 XML 配置。 Spring 通过注解

  • 本文向大家介绍详解spring注解配置启动过程,包括了详解spring注解配置启动过程的使用技巧和注意事项,需要的朋友参考一下        最近看起spring源码,突然想知道没有web.xml的配置,spring是怎么通过一个继承于AbstractAnnotationConfigDispatcherServletInitializer的类来启动自己的。鉴于能力有限以及第一次看源码和发博客,不到

  • 本文向大家介绍基于XML配置Spring的自动装配过程解析,包括了基于XML配置Spring的自动装配过程解析的使用技巧和注意事项,需要的朋友参考一下 一、了解Spring自动装配的方式 采用传统的XML方式配置Bean组件的关键代码如下所示 我们通过<property>标签为Bean的属性注入所需的值,当需要维护的Bean组件及需要注入的属性更多时,势必会增加配置的工作量。这时可以使用自动装配。

  • 本文向大家介绍Spring 自动装配的二义性实例解析,包括了Spring 自动装配的二义性实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring 自动装配的二义性实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.我们知道可以用Spring的自动装配(@Autowired)将Bean应用注入到构造参数和属性中,但

  • 本文向大家介绍MyBatis动态SQL实现配置过程解析,包括了MyBatis动态SQL实现配置过程解析的使用技巧和注意事项,需要的朋友参考一下 动态SQL 什么是动态SQL: ​ 动态SQL就是根据不同的条件生成不同的SQL语句 if choose(when,otherwise) trim(where,set) foreach 1、搭建环境 建表 创建一个基础工程 导包 编写配置文件 编写实体类