iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring@Autowired注解与自动装配的示例分析
  • 275
分享到

Spring@Autowired注解与自动装配的示例分析

spring@autowired 2023-05-31 01:05:02 275人浏览 独家记忆
摘要

这篇文章主要介绍了spring@Autowired注解与自动装配的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1 配置文件的方法我们编写spring 框架的代码时候

这篇文章主要介绍了spring@Autowired注解与自动装配的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1 配置文件的方法

我们编写spring 框架的代码时候。一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套写上 get 和 set方法。

Boss 拥有 Office 和 Car 类型的两个属性:

清单 3. Boss.java

package com.baobaotao;   public class Boss {   private Car car;   private Office office;    // 省略 get/setter    @Override  public String toString() {    return "car:" + car + "/n" + "office:" + office;   }  }

System.out.println必须实现toString方法

我们在 Spring 容器中将 Office 和 Car 声明为 Bean,并注入到 Boss Bean 中:下面是使用传统 XML 完成这个工作的配置文件 beans.xml:

清单 4. beans.xml 将以上三个类配置成 Bean

<?xml version="1.0" encoding="UTF-8" ?>  <beans xmlns="Http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">   <bean id="boss" class="com.baobaotao.Boss">    <property name="car" ref="car"/>    <property name="office" ref="office" />   </bean>   <bean id="office" class="com.baobaotao.Office">    <property name="officeNo" value="002"/>   </bean>   <bean id="car" class="com.baobaotao.Car" scope="singleton">    <property name="brand" value=" 红旗 CA72"/>    <property name="price" value="2000"/>   </bean>  </beans>

当我们运行以下代码时,控制台将正确打出 boss 的信息:

清单 5. 测试类:AnnoiocTest.java

import org.springframework.context.ApplicationContext;  import org.springframework.context.support.ClassPathXmlApplicationContext;  public class AnnoIoCTest {    public static void main(String[] args) {    String[] locations = {"beans.xml"};    ApplicationContext ctx =     new ClassPathXmlApplicationContext(locations);    Boss boss = (Boss) ctx.getBean("boss");    System.out.println(boss);   }  }

这说明 Spring 容器已经正确完成了 Bean 创建和装配的工作。

2 @Autowired

Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。

要实现我们要精简程序的目的。需要这样来处理:

* 在applicationContext.xml中加入:

<!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->   <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

Spring 通过一个 BeanPostProcessor 对 @Autowired 进行解析,所以要让 @Autowired 起作用必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。

* 修改在原来注入spirng容器中的bean的方法。

在域变量上加上标签@Autowired,并且去掉 相应的get 和set方法

清单 6. 使用 @Autowired 注释的 Boss.java

package com.baobaotao;  import org.springframework.beans.factory.annotation.Autowired;   public class Boss {    @Autowired  private Car car;    @Autowired  private Office office;    …  }

* 在applicatonContext.xml中 把原来 引用的<porpery >标签也去掉。

<?xml version="1.0" encoding="UTF-8" ?>  <beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">    <!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 -->   <bean class="org.springframework.beans.factory.annotation.    AutowiredAnnotationBeanPostProcessor"/>    <!-- 移除 boss Bean 的属性注入配置的信息 -->   <bean id="boss" class="com.baobaotao.Boss"/>     <bean id="office" class="com.baobaotao.Office">    <property name="officeNo" value="001"/>   </bean>   <bean id="car" class="com.baobaotao.Car" scope="singleton">    <property name="brand" value=" 红旗 CA72"/>    <property name="price" value="2000"/>   </bean>  </beans>

这样,当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。

按照上面的配置,Spring 将直接采用 Java 反射机制对 Boss 中的 car 和 office 这两个私有成员变量进行自动注入。所以对成员变量使用 @Autowired 后,您大可将它们的 setter 方法(setCar() 和 setOffice())从 Boss 中删除。

当然,您也可以通过 @Autowired 对方法或构造函数进行标注,如果构造函数有两个入参,分别是 bean1 和 bean2,@Autowired 将分别寻找和它们类型匹配的 Bean,将它们作为 CountryService (Bean1 bean1 ,Bean2 bean2) 的入参来创建 CountryService Bean。来看下面的代码: 对方法

package com.baobaotao;   public class Boss {   private Car car;   private Office office;     @Autowired  public void setCar(Car car) {    this.car = car;   }     @Autowired  public void setOffice(Office office) {    this.office = office;   }   …  }

这时,@Autowired 将查找被标注的方法的入参类型的 Bean,并调用方法自动注入这些 Bean。而下面的使用方法则对构造函数进行标注:

package com.baobaotao;   public class Boss {   private Car car;   private Office office;     @Autowired  public void setCar(Car car) {    this.car = car;   }     @Autowired  public void setOffice(Office office) {    this.office = office;   }   …

由于 Boss() 构造函数有两个入参,分别是 car 和 office,@Autowired 将分别寻找和它们类型匹配的 Bean,将它们作为 Boss(Car car ,Office office) 的入参来创建 Boss Bean。

感谢你能够认真阅读完这篇文章,希望小编分享的“Spring@Autowired注解与自动装配的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Spring@Autowired注解与自动装配的示例分析

本文链接: https://www.lsjlt.com/news/222646.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring@Autowired注解与自动装配的示例分析
    这篇文章主要介绍了Spring@Autowired注解与自动装配的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1 配置文件的方法我们编写spring 框架的代码时候...
    99+
    2023-05-31
    spring @autowired
  • Spring使用@Autowired注解实现自动装配方式
    目录Spring支持注解配置引入注解依赖启用注解使用@Autowired注解实现自动装配1、IOC容器配置2、实体类使用@Autowired注解注入属性3、测试结果@Autowire...
    99+
    2024-04-02
  • Java注解机制之Spring自动装配实现原理的示例分析
    小编给大家分享一下Java注解机制之Spring自动装配实现原理的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! Java中使用注解的情况主要在SpringMVC(Spring Boot等),注解实际上相...
    99+
    2023-05-31
    java spring
  • Spring注解实现Bean自动装配示例详解
    何为自动装配 自动装配是 Spring 满足 bean 依赖的一种方式。 在使用 Spring 配置 bean 时,我们都要给配置的 bean 的属性设置一个值,如果不手动设置则都...
    99+
    2024-04-02
  • SpringBoot示例分析讲解自动化装配机制核心注解
    目录1. 自动化装配介绍2. Spring Boot 自动化配置UML图解3. Spring Boot 自动化配置核心注解分析3.1 @Inherited3.2 @SpringBoo...
    99+
    2024-04-02
  • spring自定义校验注解ConstraintValidator的示例分析
    这篇文章主要介绍spring自定义校验注解ConstraintValidator的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前言系统执行业务逻辑之前,会对输入数据进行校验,检测数据是否有效合法的。所以...
    99+
    2023-06-20
  • Spring注解解析之@ImportResource的示例分析
    这篇文章给大家分享的是有关Spring注解解析之@ImportResource的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、ImportResource1.1 定义包和类首先定义一个不会被Compo...
    99+
    2023-06-15
  • spring常用注解的示例分析
    这篇文章给大家分享的是有关spring常用注解的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1 、将普通类加入容器形成Bean的注解日常开发中主要使用到的定义Bean的注解包括(XML方式配置bean暂...
    99+
    2023-05-30
    spring
  • spring注解之@profile的示例分析
    这篇文章给大家分享的是有关spring注解之@profile的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。spring中@profile与maven中的profile很相似,通过配置来改变参数。例如在开...
    99+
    2023-05-31
    spring profile
  • @Autowired自动装配,@Bean注入@Primary,@Qualifier优先级讲解
    目录Autowired自动装配第一种情况第二种情况第三种情况第四种情况总结@Autowired 取值app.getBean()@Primary 优先Autowired自动装配 spr...
    99+
    2024-04-02
  • Spring Boot 详细分析Conditional自动化配置注解
    目录1. Spring Boot Condition功能与作用2. Conditional条件化系列注解介绍3. Conditional条件化注解的实现原理4. Conditiona...
    99+
    2024-04-02
  • Spring框架学习之Spring @Autowired实现自动装配的代码
    学习自动装配之前,讲一个概念:Component,即组件。组件你也可以理解为bean对象,只不过通常Component的组成会稍微复杂一些,比如,一个组件里面会引用一个或多个别的be...
    99+
    2024-04-02
  • Spring使用注解进行引用类型的自动装配逐步分析
    目录一.案例分级二.各层代码及详细解析三.自动装配成功正确执行结果本系列文章将会带领大家进行Spring的全面学习,持续关注我,不断更新中… 一.案例分级 简单解析:...
    99+
    2023-03-06
    Spring自动装配 Spring引用类型的自动装配
  • Java自动拆装箱的示例分析
    这篇文章将为大家详细讲解有关Java自动拆装箱的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、拆装箱概念所谓的拆装箱,就是自从JDK1.5之后,java的基本类型和引用类型之间的相互转换。1拆...
    99+
    2023-05-31
    java
  • springBoot自动注入原理的示例分析
    这篇文章给大家分享的是有关springBoot自动注入原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。@SpringBootApplication注解解读为什么我们的启动类上标注一个@SpringBo...
    99+
    2023-06-29
  • Spring使用注解实现Bean的自动装配
    目录一、利用注解方式注入属性二、@Autowired三、@Qualifier四、@Resource总结一、利用注解方式注入属性 <xml version="1.0" enco...
    99+
    2024-04-02
  • Linux中启动与自启动的示例分析
    这篇文章将为大家详细讲解有关Linux中启动与自启动的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux启动与自启动的实例详解一 启动与自启动服务启动:就是在当前系统中让服务运行,并提供功能...
    99+
    2023-06-09
  • Spring中@Autowired注解在不同方法的写法示例
    目录正文写在构造方法上写在普通方法上写在方法参数前写在属性上写在其他注解上正文 今天来跟大家聊聊简单聊聊@Autowired,Autowired翻译过来为自动装配,也就是自动给Be...
    99+
    2023-01-10
    Spring @Autowired注解 Spring @Autowired
  • SpringBoot自动配置原理的示例分析
    这篇文章主要介绍了SpringBoot自动配置原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、SpringBoot是什么SpringBoot 的诞生就是为了简...
    99+
    2023-06-22
  • Spring依赖注入的示例分析
    这篇文章给大家分享的是有关Spring依赖注入的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一.依赖简介一个典型的企业应用程序不是由一个单一的对象组成(或Spring的说法中的bean)。即使是最简单的...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作