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了
//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();
}
分享到:
相关推荐
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)特性而闻名,其中自动装配(Auto-Wiring)是DI的一种实现方式。自动装配允许开发者减少手动配置bean之间的依赖关系...
Spring框架是Java开发中广泛应用的一个轻量级容器,它的核心特性之一就是依赖注入(Dependency Injection,简称DI),而Spring的自动装配(Auto-Wiring)则是DI的一种实现方式。本篇文章将深入探讨Spring自动装配的...
ean的自动装配,有4种 (1)no:不做任何操作 (2)byName:根据属性 名 自动装配,设值注入 <bean id="xxx" class="xxx" ></bean> (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 ...
标题中的“Spring自动装配”指的是Spring框架中的一个重要特性,它允许开发者在不显式配置Bean依赖的情况下,由Spring容器自动管理Bean之间的依赖关系。这一特性极大地简化了代码,提高了可维护性和可测试性。 在...
自动装配是Spring框架的核心特性之一,它允许框架自动管理对象之间的依赖关系,无需在代码中显式地创建或查找依赖对象。Spring提供了多种自动装配方式,如byType、byName等,可以根据配置或注解来实现。在项目中,...
spring的自动装配
Java注解机制之Spring自动装配实现原理详解 Java注解机制是Java语言中的一种元数据 Facility,提供了一种在编译期和运行期对Java代码进行标记和描述的机制, Spring框架中使用Java注解机制来实现自动装配功能。自动...
如果找不到匹配的名称,但找到了类型匹配的Bean,Spring会默认使用类型匹配进行自动装配。 ### 三、`@Qualifier`辅助注解 当一个类型有多个实例时,`@Autowired`可能会出现歧义,这时可以结合`@Qualifier`注解来...
例如,如果你想在bean中注入一个整数值,你不能依赖自动装配,而是需要显式地在配置文件或使用@Component注解的类中声明这个依赖。 3. **类字面量的处理**: 类字面量(Class literals)指的是类的.class属性,...
1. **无自动装配**(No Autowiring):默认情况下,Spring不进行任何自动装配。 2. **byName**:根据bean的属性名匹配bean的ID,将相同名称的bean注入。 3. **byType**:如果一个bean的属性类型与另一个bean的类型...
Spring自动装配的方式和举例、以及@Qualifier、@Autowire、@Resource的使用。
### Spring自动装配模式详解 #### 一、引言 在Spring框架中,自动装配是一种非常实用的功能,可以简化Bean的依赖注入过程。Spring提供了多种自动装配模式,每种模式都有其适用场景。本文将详细介绍Spring框架中的...
在Spring框架中,“自动装配”(Autowiring)是一项核心特性,它允许Spring容器自动为bean注入所需的依赖,而无需显式配置。本篇将深入探讨自动装配的概念、类型以及如何在Spring应用中使用。 自动装配是Spring IoC...
这种模式表示Spring容器不进行任何自动装配,所有依赖必须通过显式配置来解决。这是默认的自动装配模式。 4. constructor(构造器注入装配) 这种装配方式是通过Bean的构造函数来完成的。Spring会尝试找到与构造...
首先,`@Autowired`是Spring的核心功能之一,它能自动将依赖的bean注入到需要的地方,极大地简化了代码。例如,如果我们有一个`Service`接口,有两个实现了该接口的类`ServiceA`和`ServiceB`,并且这两个bean都被...
在本章中,我们将深入探讨Spring框架的核心特性之一——自动装配和方法注入。Spring作为一款广泛应用的Java企业级开发框架,极大地简化了依赖管理,提高了代码的可测试性和可维护性。自动装配和方法注入是Spring实现...
当有多个 Bean 匹配同一个结果时,Spring 就不知道选择哪个实现类来装配,从而导致自动装配失败。 例如,在一个 sweet 接口中,存在多个实现类,如 Cookies 和 Cake。当使用 @Autowired 将sweet 接口注入到构造参数...
例如,如果集合元素是`List<Address>`,且存在多个`Address`类型的bean,它们的名称分别与集合元素的类型匹配,如`homeAddress`、`workAddress`,那么这些bean会被自动装配到列表中。 6. **使用`@Qualifier`注解** ...
spring-boot自动装配原理.md