`
Longmanfei
  • 浏览: 48076 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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方式。不确定行的处理与constuctorbyType方式一样

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

//Longmanfei.xml
<?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="greetingDaoImpl" class="cn.csdn.dao.GreetingDaoImpl" >

<!-- 通过set方法进行注入 -->

<property name="say" value="你好"></property>  

    </bean>

<bean id="greetingServiceImpl"

class="cn.csdn.service.GreetingServiceImpl" autowire="no">

<property name="gdi" ref="greetingDaoImpl"></property>

</bean>

   </beans>

//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();

   

   }

 

 

2
6
分享到:
评论

相关推荐

    Spring实现自动装配

    Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)特性而闻名,其中自动装配(Auto-Wiring)是DI的一种实现方式。自动装配允许开发者减少手动配置bean之间的依赖关系...

    Spring自动装配解析

    Spring框架是Java开发中广泛应用的一个轻量级容器,它的核心特性之一就是依赖注入(Dependency Injection,简称DI),而Spring的自动装配(Auto-Wiring)则是DI的一种实现方式。本篇文章将深入探讨Spring自动装配的...

    spring自动装配例子

    ean的自动装配,有4种 (1)no:不做任何操作 (2)byName:根据属性 名 自动装配,设值注入 &lt;bean id="xxx" class="xxx" &gt;&lt;/bean&gt; (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 ...

    spring自动装配

    标题中的“Spring自动装配”指的是Spring框架中的一个重要特性,它允许开发者在不显式配置Bean依赖的情况下,由Spring容器自动管理Bean之间的依赖关系。这一特性极大地简化了代码,提高了可维护性和可测试性。 在...

    spring自动装配项目struts2

    自动装配是Spring框架的核心特性之一,它允许框架自动管理对象之间的依赖关系,无需在代码中显式地创建或查找依赖对象。Spring提供了多种自动装配方式,如byType、byName等,可以根据配置或注解来实现。在项目中,...

    spring的自动装配

    spring的自动装配

    Java注解机制之Spring自动装配实现原理详解

    Java注解机制之Spring自动装配实现原理详解 Java注解机制是Java语言中的一种元数据 Facility,提供了一种在编译期和运行期对Java代码进行标记和描述的机制, Spring框架中使用Java注解机制来实现自动装配功能。自动...

    4Spring自动装配——annotation resource方式

    如果找不到匹配的名称,但找到了类型匹配的Bean,Spring会默认使用类型匹配进行自动装配。 ### 三、`@Qualifier`辅助注解 当一个类型有多个实例时,`@Autowired`可能会出现歧义,这时可以结合`@Qualifier`注解来...

    Spring中的自动装配有哪些限制?.docx

    例如,如果你想在bean中注入一个整数值,你不能依赖自动装配,而是需要显式地在配置文件或使用@Component注解的类中声明这个依赖。 3. **类字面量的处理**: 类字面量(Class literals)指的是类的.class属性,...

    Spring 自动装配及其注解

    1. **无自动装配**(No Autowiring):默认情况下,Spring不进行任何自动装配。 2. **byName**:根据bean的属性名匹配bean的ID,将相同名称的bean注入。 3. **byType**:如果一个bean的属性类型与另一个bean的类型...

    Spring自动装配的方式

    Spring自动装配的方式和举例、以及@Qualifier、@Autowire、@Resource的使用。

    Spring自动装配模式表

    ### Spring自动装配模式详解 #### 一、引言 在Spring框架中,自动装配是一种非常实用的功能,可以简化Bean的依赖注入过程。Spring提供了多种自动装配模式,每种模式都有其适用场景。本文将详细介绍Spring框架中的...

    spring学习之四“自动装配”

    在Spring框架中,“自动装配”(Autowiring)是一项核心特性,它允许Spring容器自动为bean注入所需的依赖,而无需显式配置。本篇将深入探讨自动装配的概念、类型以及如何在Spring应用中使用。 自动装配是Spring IoC...

    Spring的自动装配源代码

    这种模式表示Spring容器不进行任何自动装配,所有依赖必须通过显式配置来解决。这是默认的自动装配模式。 4. constructor(构造器注入装配) 这种装配方式是通过Bean的构造函数来完成的。Spring会尝试找到与构造...

    Spring自动装配@Qualifier实例

    首先,`@Autowired`是Spring的核心功能之一,它能自动将依赖的bean注入到需要的地方,极大地简化了代码。例如,如果我们有一个`Service`接口,有两个实现了该接口的类`ServiceA`和`ServiceB`,并且这两个bean都被...

    第五章 Spring4 自动装配、方法注入

    在本章中,我们将深入探讨Spring框架的核心特性之一——自动装配和方法注入。Spring作为一款广泛应用的Java企业级开发框架,极大地简化了依赖管理,提高了代码的可测试性和可维护性。自动装配和方法注入是Spring实现...

    Spring 自动装配的二义性实例解析

    当有多个 Bean 匹配同一个结果时,Spring 就不知道选择哪个实现类来装配,从而导致自动装配失败。 例如,在一个 sweet 接口中,存在多个实现类,如 Cookies 和 Cake。当使用 @Autowired 将sweet 接口注入到构造参数...

    Spring如何装配各种集合类型的属性

    例如,如果集合元素是`List&lt;Address&gt;`,且存在多个`Address`类型的bean,它们的名称分别与集合元素的类型匹配,如`homeAddress`、`workAddress`,那么这些bean会被自动装配到列表中。 6. **使用`@Qualifier`注解** ...

    spring-boot自动装配原理.md

    spring-boot自动装配原理.md

Global site tag (gtag.js) - Google Analytics