Spring自动装配Bean的两种方法(—)
来源:互联网 发布:算工资的软件 编辑:程序博客网 时间:2024/05/22 14:15
配置文件自动装配
配置文件装配方法一共有四种,如下所示:
- default装配bean
- byName装配bean
- byType装配bean
- constructor装配bean
工具 Intellij 框架:maven+spring
项目结构:
maven pom.xml配置如下所示(移动配置文件中的 下的代码即可):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringDemo</groupId> <artifactId>com.yiwen</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>com.yiwen Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>4.1.6.RELEASE</spring.version> <!-- <mysql-connector-java.version>5.1.34</mysql-connector-java.version> --> </properties> <dependencies> <!-- spring start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- spring end --> </dependencies> <build> <finalName>com.yiwen</finalName> </build></project>
首先我们创建两个类,分别为Hotel 和 Customer,如下所示:
Hotel:(注意!Hotel的构造放在只有在上面四种方法的最后一种方法中才能用,我们现在需要把它注释掉)
public class Hotel { private Customer customer; /* public Hotel(Customer customer) { this.customer = customer; } */ public Customer getCustomer() { return customer; }}
Customer
public class Customer { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}
test4.xml的配置
首先配置customer的bean,如下所示
<bean id="customer" class="com.yiwen.test4.Customer" > <property name="name" value="zhangsan"></property></bean>
默认方法装配bean
该方法为default方法,不用加autowire,通过property的ref属性将customer装配到hotel的bean中,如下所示:
<bean id="hotel" class="com.yiwen.test4.Hotel"> <property name="customer" ref="customer" /></bean>
通过byName的方法装配bean
该方法是通过hotel中声明属性名customer来寻找xml文件中相应的id为customer的bean装配进来,如下所示:
<bean id="hotel" class="com.yiwen.test4.Hotel" autowire="byName"></bean>
通过byType的方法装配bean
该方法是通过hotel中声明的属性的类型,即通过属性类型Customer来寻找相同类型的bean进行装配,如下所示:
<bean id="hotel" class="com.yiwen.test4.Hotel" autowire="byType"></bean>
通过byType方法装配可能会出现如下问题:
当customer的bean有两个时,通过byType的方法会出现错误,应为它不知道该装配哪一个bean,如下所示:
<bean id="hotel" class="com.yiwen.test4.Hotel" autowire="byType"></bean>//有两个类型为Customer的bean,byType无法选择,会报错<bean id="customer1" class="com.yiwen.test4.Customer" > <property name="name" value="zhangsan"></property></bean><bean id="customer2" class="com.yiwen.test4.Customer" > <property name="name" value="zhangsan"></property></bean>
通过constructor的方法进行装配bean
该方法是通过hotel的构造方法中的参数的属性类型来寻找对应的bean进行装配,如下所示:
<bean id="hotel" class="com.yiwen.test4.Hotel" autowire="constructor"></bean>
通过constructor同样可能会遇到和byType相同的错误,如下所示:
<bean id="hotel" class="com.yiwen.test4.Hotel" autowire="constructor"></bean>//有两个类型为Customer的bean,constructor无法选择,会报错<bean id="customer1" class="com.yiwen.test4.Customer" > <property name="name" value="zhangsan"></property></bean><bean id="customer2" class="com.yiwen.test4.Customer" > <property name="name" value="zhangsan"></property></bean>
阅读全文
0 0
- Spring自动装配Bean的两种方法(—)
- Spring自动装配Bean的两种方法(二)
- spring的bean装配两种方式
- 1.Spring完成自动装配,两种方式:bean
- Spring入门——Bean的自动装配(Autowring)
- spring基础-Bean的装配方式(三)自动装配
- Spring Bean的装配 -- 自动装配
- [Spring]Bean的自动装配
- # Spring Bean 的自动装配
- spring bean的自动装配
- spring bean的自动装配
- Spring的自动装配Bean
- Spring bean的自动装配
- 【Spring】Bean的自动装配
- Spring Bean的自动装配
- Spring bean的自动装配
- spring <bean>的自动装配
- Spring中bean的三种装配机制之——自动装配
- HttpSession
- MSSQL · 最佳实践 · SQL Server三种常见备份
- UNPv13:#第2章#传输层:TCP、UDP和SCTP
- 521. Longest Uncommon Subsequence I
- Bentley MAXSURF CONNECT Edition v21.11.00.84 Win64 1DVD
- Spring自动装配Bean的两种方法(—)
- 【我的Android进阶之旅】Android 混淆文件资源分类整理
- 面向对象编程其实很简单——Python 面向对象(初级篇)
- 实时语音视频SDK使用FEC和ARQ实现超低延迟
- HDU 2669 Romantic【扩展欧几里得板子题】
- C# Parallel.For和Parallel.ForEach学习
- 二、配置你的bean
- Java中Synchronized的用法
- DQL、DML、DDL、DCL的概念与区别(转)