自动装配

新建person类:

package com.spring.bean.autowire;

public class Person {

    private String name;
private Address address;
private Car car;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Person [name=" + name + ", address=" + address + ", car=" + car + "]";
} }

新建Car类:

package com.spring.bean.autowire;

public class Car {

    private String brand;
private double price;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", price=" + price + "]";
}
}

Address类:

package com.spring.bean.autowire;

public class Address {

    private String city;
private String street;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
@Override
public String toString() {
return "Address [city=" + city + ", street=" + street + "]";
}
}

配置文件:

    <bean id="address" class="com.spring.bean.autowire.Address"
p:city="北京" p:street="芙蓉观"></bean> <bean id="car" class="com.spring.bean.autowire.Car"
p:brand="奥迪" p:price="3000"></bean> <bean id="person" class="com.spring.bean.autowire.Person"
p:name="汤姆" p:address-ref="address" p:car-ref="car"></bean>

使用:

        ApplicationContext ctx=new ClassPathXmlApplicationContext("beans-autowire.xml");
Person person=(Person) ctx.getBean("person");
System.out.print(person);

运行:

改成自动装配:

byName:可以使用autowire属性自动装配的方式,byName根据bean的名字和当前bean的setter风格的属性名自动装配。

    <bean id="address" class="com.spring.bean.autowire.Address"
p:city="北京" p:street="芙蓉观"></bean> <bean id="car" class="com.spring.bean.autowire.Car"
p:brand="奥迪" p:price="3000"></bean> <!-- 可以使用autowire属性自动装配的方式,byName根据bean的名字和当前bean的setter风格的属性名自动装配 ,
若有匹配的,则进行自动装配,若没有匹配的不装配-->
<bean id="person" class="com.spring.bean.autowire.Person"
p:name="汤姆" autowire="byName"></bean>

byType:

可以使用autowire属性自动装配的方式,byName根据bean的类型和当前bean的setter风格的类型进行自动装配 ,
但是,如果IOC容器中有一个以上的类型匹配的bean,则抛异常。

    <!-- 可以使用autowire属性自动装配的方式,byName根据bean的类型和当前bean的setter风格的类型进行自动装配 ,
但是,如果IOC容器中有一个以上的类型匹配的bean,则抛异常-->
<bean id="person" class="com.spring.bean.autowire.Person"
p:name="汤姆" autowire="byType"></bean>

03-spring学习-自动装配的更多相关文章

  1. Spring学习----自动装配@Resource、@Autowired、@Qualifier

    直接看下面的代码即可明白: applicationContext.xml里面添加个bean: <!--注解的注入 --> <bean id="student3" ...

  2. Eureka 系列(03)Spring Cloud 自动装配原理

    Eureka 系列(03)Spring Cloud 自动装配原理 [TOC] 0. Spring Cloud 系列目录 - Eureka 篇 本文主要是分析 Spring Cloud 是如何整合 Eu ...

  3. Spring Boot 自动装配(二)

    目录 目录 前言 1.起源 2.Spring Boot 自动装配实现 2.1.@EnableAutoConfiguration 实现 2.1.1. 获取默认包扫描路径 2.1.2.获取自动装配的组件 ...

  4. Spring的自动装配Bean

    spring的自动装配功能的定义:无须在Spring配置文件中描述javaBean之间的依赖关系(如配置<property>.<constructor-arg>).IOC容器会 ...

  5. spring完成自动装配

    让spring完成自动装配 Autowiring 解决标签为javaBean注入时难以维护而实现的 下面是几种autowire type的说明: 1,byname:试图在容器中寻找和需要自动装配的属性 ...

  6. spring中自动装配bean

    首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component p ...

  7. spring的自动装配,骚话@Autowired的底层工作原理

    前言 开心一刻 十年前,我:我交女票了,比我大两岁.妈:不行!赶紧分! 八年前,我:我交女票了,比我小两岁,外地的.妈:你就不能让我省点心? 五年前,我:我交女票了,市长的女儿.妈:别人还能看上你?分 ...

  8. 五、Spring之自动装配

    Spring之自动装配 ​ Spring利用依赖注入(DI),完成对IOC容器中各个组件依赖关系的赋值. [1]@Autowired @Autowired 注解,它可以对类成员变量.方法及构造函数进行 ...

  9. Spring Boot自动装配

    前言 一些朋友问我怎么读源码,这篇文章结合我看源码时候一些思路给大家聊聊,我主要从这三个方向出发: 确定目标,这个目标要是一个具体,不要一上来我要看懂Spring,这是不可能的,目标要这么来定,比如看 ...

  10. Spring Boot自动装配原理源码分析

    1.环境准备 使用IDEA Spring Initializr快速创建一个Spring Boot项目 添加一个Controller类 @RestController public class Hell ...

随机推荐

  1. 【Leetcode】264. Ugly Number II ,丑数

    原题 Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime facto ...

  2. JCL: What is EXCP

      JCL: What is EXCP ?   EXCP stands for EXecute Channel Program. These are the I/O subsystem hardwar ...

  3. Python开发基础-Day24socket套接字基础2

    基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 #客户端 import socket ip_port=('127 ...

  4. [BZOJ4246]两个人的星座(计算几何)

    4246: 两个人的星座 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 101  Solved: 55[Submit][Status][Discuss ...

  5. 【计算几何】CDOJ1720 几何几何

    #include<cstdio> #include<algorithm> #include<cmath> using namespace std; #define ...

  6. Java并发(一):多线程干货总结

    一.进程 线程 进程:一个进程来对应一个程序, 每个进程对应一定的内存地址空间,并且只能使用它自己的内存空间,各个进程间互不干扰. 进程保存了程序每个时刻的运行状态,这样就为进程切换提供了可能.当进程 ...

  7. 防止xss攻击

    <?php function _removeXSS($val) { $search = 'abcdefghijklmnopqrstuvwxyz'; $search .= 'ABCDEFGHIJK ...

  8. mysql 创建存储过程及测试sql

    --存储过程 CREATE PROCEDURE proc_batch_id( out batch_id bigint ) begin insert into generate_sync_batch ( ...

  9. Tesseract训练中文字体识别

    注:目前仅说明windows下的情况 前言 网上已经有大量的tesseract的识别教程,但是主要有两个缺点: 大多数比较老,有部分内容已经不适用. 大部分只是就英文的训练进行探索,很少针对中文的训练 ...

  10. Wlms进程导致Windows2008R2操作系统关机的解决办法

    2.将wlms进程干掉,将PStooLs工具copy至服务器的C盘根目录下 3.运行psexec.exe -d -i -s regedit.exe 命令 4.打开注册表,找到vlms选项, [HKEY ...