温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spring如何实现自动装配

发布时间:2022-01-19 11:39:28 来源:亿速云 阅读:92 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关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如何实现自动装配”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI