`

Spring五种autowire模式

阅读更多
在Spring中,有五种autowire模式:byName,byType,constructor,autodetect,no;
下面分别对其进行介绍
1 byName:这个很简单,直接按照名字进行查找
Java代码

   1. package com.jnotnull; 
   2.  
   3. public class HelloWorld { 
   4.     public String message = null; 
   5.  
   6.         public void init(){ 
   7.                this.message = "HelloWorld"; 
   8.         } 
   9.  
  10.     public String getMessage() { 
  11.         return message; 
  12.     } 
  13.  
  14.     public void setMessage(String message) { 
  15.         this.message = message; 
  16.     } 
  17.  
  18. } 

package com.jnotnull;

public class HelloWorld {
public String message = null;

        public void init(){
               this.message = "HelloWorld";
        }

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}


config.xml
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="byName"> 
   6. <property name ="message"> 
   7.  <value>HelloWorld</value> 
   8.  </property> 
   9.  <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="byName">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>


2 byType:按照类型进行查找,如果没有找到匹配的,则什么也没有改变,同时可以通过设置dependency-check="objects"属性来在没有匹配到的情况下抛出这种错误。
Java代码

   1. package com.jnotnull; 
   2.  
   3. public class HelloWorld { 
   4.     public String message = null; 
   5.  
   6.         public void init(){ 
   7.                this.message = "HelloWorld"; 
   8.         } 
   9.  
  10.     public String getMessage() { 
  11.         return message; 
  12.     } 
  13.  
  14.     public void setMessage(String message) { 
  15.         this.message = message; 
  16.     } 
  17.  
  18. } 

package com.jnotnull;

public class HelloWorld {
public String message = null;

        public void init(){
               this.message = "HelloWorld";
        }

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}


config.xml
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="byType"> 
   6. <property name ="message"> 
   7.  <value>HelloWorld</value> 
   8.  </property> 
   9.  <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="byType">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>



3 constructor:直接根据构造函数进行匹配
Java代码

   1. package com.jnotnull; 
   2.  
   3. public class HelloWorld { 
   4.     public String message = null; 
   5.  
   6.         public void init(){ 
   7.                this.message = "HelloWorld"; 
   8.         } 
   9.  
  10.     public String getMessage() { 
  11.         return message; 
  12.     } 
  13.  
  14.     public void setMessage(String message) { 
  15.         this.message = message; 
  16.     } 
  17.  
  18. } 

package com.jnotnull;

public class HelloWorld {
public String message = null;

        public void init(){
               this.message = "HelloWorld";
        }

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}


config.xml
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="constrator"> 
   6. <property name ="message"> 
   7.  <value>HelloWorld</value> 
   8.  </property> 
   9.  <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="constrator">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>


4 autodetect:先按constructor匹配,再按byType匹配
Java代码

   1. package com.jnotnull; 
   2.  
   3. public class HelloWorld { 
   4.     public String message = null; 
   5.  
   6.         public void init(){ 
   7.                this.message = "HelloWorld"; 
   8.         } 
   9.  
  10.     public String getMessage() { 
  11.         return message; 
  12.     } 
  13.  
  14.     public void setMessage(String message) { 
  15.         this.message = message; 
  16.     } 
  17.  
  18. } 

package com.jnotnull;

public class HelloWorld {
public String message = null;

        public void init(){
               this.message = "HelloWorld";
        }

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}


config.xml
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="autodetect"> 
   6. <property name ="message"> 
   7.  <value>HelloWorld</value> 
   8.  </property> 
   9.  <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="autodetect">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>



5 no:不用任何模式进行匹配,这个也是默认的匹配模式
Java代码

   1. package com.jnotnull; 
   2.  
   3. public class HelloWorld { 
   4.     public String message = null; 
   5.  
   6.         public void init(){ 
   7.                this.message = "HelloWorld"; 
   8.         } 
   9.  
  10.     public String getMessage() { 
  11.         return message; 
  12.     } 
  13.  
  14.     public void setMessage(String message) { 
  15.         this.message = message; 
  16.     } 
  17.  
  18. } 

package com.jnotnull;

public class HelloWorld {
public String message = null;

        public void init(){
               this.message = "HelloWorld";
        }

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}


config.xml
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="no"> 
   6. <property name ="message"> 
   7.  <value>HelloWorld</value> 
   8.  </property> 
   9.  <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" autowire="no">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>
分享到:
评论

相关推荐

    spring-autowire.zip

    依赖注入是一种设计模式,它允许我们把对象的依赖关系交给外部容器管理,而不是由对象内部自行创建和管理。Spring框架通过DI实现了这一模式,使得对象间的依赖关系更加清晰,降低了代码的复杂性。 接下来,我们来看...

    Spring自动装配模式表

    本文将详细介绍Spring框架中的五种自动装配模式:`no`、`byName`、`byType`、`constructor`以及`autodetect`,帮助开发者更好地理解和应用这些模式。 #### 二、自动装配模式概览 自动装配是指Spring容器根据一定的...

    autowire自动导入句柄

    Spring提供了五种自动装配模式: - **No**:默认模式,不进行自动装配,完全依赖于手动配置。 - **byName**:根据bean属性的名称来寻找匹配的bean进行自动装配。 - **byType**:根据bean属性的类型来寻找匹配的bean...

    Spring三种注入方式(二)

    在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象之间的耦合度降低,提高了代码的可测试性和可维护性。本篇主要介绍Spring中的三种注入方式,着重讲解在"Spring三种注入...

    spring4示例代码

    spring-3 演示使用动态代理模式实现面向切面编程 使用注解方式进行AOP编程及使用配置xml方式进行AOP编程 spring-4 演示了spring与JDBCTemplate配合使用 spring-5 演示了声明式事务及使用xml配置文件处理事务

    spring02-3

    `autowire`有多种模式: 1. `byName`:Spring会查找与bean属性名相同的bean,并自动注入。 2. `byType`:Spring会查找类型匹配的bean,并注入第一个找到的实例。 3. `constructor`:Spring会寻找合适的构造函数,...

    spring自动装配

    在压缩包文件名称“spring_0700_IOC_Autowire”中,“IOC”代表“Inversion of Control”,即控制反转,它是Spring的核心概念之一,自动装配是IOC的一种实现方式。这个文件可能包含了关于Spring自动装配的教程材料,...

    spring 属性参考与自动绑定

    在Spring中,属性参考是一种在配置文件中引用其他bean的方式。例如,在`HelloBean`类中,我们定义了两个属性:`helloWord`和`date`。为了将这些属性设置到相应的bean中,我们可以在Spring的XML配置文件中使用`&lt;ref&gt;`...

    Spring自动装配解析

    在Spring的XML配置文件中,可以通过`&lt;beans&gt;`标签的`autowire`属性来全局设置自动装配策略,或者在单个`&lt;bean&gt;`标签中通过`autowire`属性指定某一个bean的自动装配方式。 4. 使用注解进行自动装配 Spring 2.5引入了...

    spring常见问题

    Spring框架常见问题解析...Autowire 是 Spring 的自动装配机制,通过指定 autowire 属性,可以让容器为受管 JavaBean 自动注入依赖对象。Autowire 有六种方式:No、byName、byType、constructor、autodetect、default。

    Spring xml 方式配制的小demo

    在XML配置中,我们可以使用`autowire`属性实现自动装配,让Spring根据类型或名称自动寻找依赖的Bean。例如: ```xml &lt;bean id="exampleBean" class="com.example.ExampleBean" autowire="byType"/&gt; ``` 4. **...

    spring的详细介绍

    可以通过`autowire`属性设置自动装配模式。 11. 依赖检查(Dependency Checking):通过配置`&lt;dependency-check&gt;`元素来检查Bean是否需要其所有依赖项。 12. 定义IoC容器管理的JavaBean的生命周期回调方法:通过`...

    springioc的详细讲解

    综上所述,Spring的IOC容器是通过控制反转和依赖注入实现的一种高级组件管理机制,它极大地简化了Java应用的复杂性,促进了松耦合和可测试性的提升。理解并熟练运用Spring IOC容器是掌握Spring框架的关键。通过阅读...

    spring配置.txtspring配置.txt

    Spring框架支持自动装配,这是一种简化依赖注入的方式。在XML配置中,可以通过`autowire`属性来指定bean之间的依赖关系。具体来说: - **No**:不启用自动装配。这是默认值,需要手动指定依赖注入。 - **By Name**...

    springwebsocket 中文注释案例

    &lt;bean id="WebSocketConfig" class="org.springframework.web.socket.config.annotation.WebSocketConfigurer" autowire="byType"&gt; &lt;bean id="serverEndpointExporter" class="org.springframework.web.socket....

    spring bean 属性总结

    有五种模式: - `no`:不自动装配,所有依赖都需手动配置。 - `byName`:根据属性名称自动装配。 - `byType`:根据属性类型自动装配。如果有多个匹配,会报错。 - `constructor`:根据构造函数参数类型自动装配...

    Spring考试试卷(有答案).docx

    15. Bean的autowire属性:Spring的autowire属性可以自动装配Bean,它能够将任何Java对象和Java组件视为Bean进行管理,但不包括EJB组件。 以上内容详细解释了Spring框架中的关键概念,包括AOP、依赖注入、事务管理、...

    spring源码解析

    Spring使用两种方式实现DI:构造器注入和setter注入。在源码中,可以追踪到`AutowireCapableBeanFactory`类中的`autowire`方法,这是处理自动装配的关键。 然后,Spring的AOP模块允许开发者定义横切关注点,如日志...

Global site tag (gtag.js) - Google Analytics