千家信息网

Spring如何实现自动装配

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章将为大家详细讲解有关Spring如何实现自动装配,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring之自动装配,所谓自动装配,从字面解读,我想应该不难
千家信息网最后更新 2025年11月12日Spring如何实现自动装配

这篇文章将为大家详细讲解有关Spring如何实现自动装配,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Spring之自动装配,所谓自动装配,从字面解读,我想应该不难理解吧(当然不是诱导读者去咬文嚼字)。那究竟spring 自动装配有几种装配类型(我想大家最关注的应该是我们什么时候可以"偷懒"反之什么时候又不能,我想开发者目的应该也是为了简化程序员的工作)。那下面我们就介绍spring自动装配之不能偷懒--autowire="no",在接受之前我们先介绍自动装配总共包括几种装配方式(在其他装配方式中就不在介绍了)。

在介绍之前,先简单的提一个问题(自动装配总共有几种呢),答案(六种)也许与大家想的有点背离,但是我个人认为并不是不无道理的。

1. default-autowire="那五种形式": 这种是在全局(即在跟标签里)定义的,如果局部定义了autowire 可想而知,当然是按照局部的去进行自动装配了,如果没有定义就是按照跟标签的默认定义去进行装配,所以在这里把它单独拿出来作为一种

2. No:通过ref元素指定依赖

3. byName:在容器中寻找和需要自动装配的属性名相同的Bean(或ID),如果没有找到相符的Bean,该属性就没有被装配上。

4. byType:在容器中寻找一个与需要自动装配的属性类型相同的Bean;如果没有找到相符的Bean,该属性就没有被装配上,如果找到超过一个相符的Bean抛出异常org.springframework.beans.factory.UnsatisfiedDependencyException(特此声明测试针对spring2.5.6,在spring3.0中检查到多个Bean貌似没有异常并且在3.0中没有依赖检查这个属性)

5. Constructor:在容器中查找与需要自动装配的Bean的构造方法参数一致的一个或者过个Bean,如果从在不确定的Bean或构造方法,容器会抛出异常org.springframework.beans.factory.UnsatisfiedDependencyException.

6. Autodetect:首先我们尝试使用constructor来自动装配,然后使用byType方式。不确定行的处理与constuctor和byType方式一样

既然我们的题目叫不能偷懒,那当然我们就要介绍no了

Java代码

//Longmanfei.xml     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">        class="cn.csdn.service.GreetingServiceImpl" autowire="no">      //GreetingDaoImpl   public class GreetingDaoImpl implements GreetingDao {   private String say;   public void say() {   System.out.println("我打了这个招呼"+say);   }   public void setSay(String say) {   this.say = say;   }   }   //GreetingServiceImpl   public class GreetingServiceImpl implements GreetingService{   private GreetingDaoImpl greetingDaoImpl;   public void say() {   greetingDaoImpl.say();   }   public void setGreetingDaoImpl(GreetingDaoImpl gdi) {   System.out.println("我调用了set方法");   this.greetingDaoImpl = gdi;   }   public GreetingServiceImpl() {   super();   System.out.println("我调用了空的构造器");   }   public GreetingServiceImpl(GreetingDaoImpl greetingDaoImpl) {   super();   System.out.println("我调用了有参的构造器");   this.greetingDaoImpl = greetingDaoImpl;   }   }   //junit测试   @Test  public void test1(){   /*加载spring容器可以解析多个配置文件采用数组方式传递*/  ApplicationContext   ac=new ClassPathXmlApplicationContext("classpath:Longmanfei.xml");   //直接转换成接口便于日后修改数据/*Ioc控制反转体现*/   GreetingService   gs=(GreetingService) ac.getBean("greetingServiceImpl");   gs.say();   }

关于"Spring如何实现自动装配"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

装配 容器 属性 方式 方法 篇文章 相同 多个 局部 时候 更多 标签 类型 构造器 检查 测试 不错 实用 一致 可想而知 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 航空公司数据库技术 上海购买网络技术转让产品 服务器拒绝访问怎么处理 网络安全的手抄报图片简单 对新员工网络安全培训 apex服务器实力排行 软件开发测试的峰值 网络安全负责人需要具备的能力 网络安全信息研判发布和报告制度 兰州台球桌球软件开发 网络安全服务八种机制 杭州学习软件开发一般要多少钱 淘外快网络技术有限公司 it电商互联网科技 剑灵能转服务器 人员定位管理服务器 深圳招聘网络安全 软件开发外派价格 网络安全人才短缺工作方案 深圳软件开发单日收费标准 魔兽数据库dk技能全览 软件开发一定要设计文档吗 正定应用软件开发服务价钱 互助盘软件开发哪家好 国外软件开发公司logo ros人机交互软件开发 服务器主板必须搭配服务器内存吗 高级服务器管理员密码 我的世界服务器小游戏在哪里下载 互信互通服务器管理端口
0