版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/qilixiang012/article/details/28260477

概要:(蓝色为本节所讲)

XML配置里的Bean自己主动装配

  • Spring IOC容器能够自己主动装配Bean。须要做的仅仅是在<bean>的autowire属性里指定自己主动装配的模式
  • byType(依据类型自己主动装配):若IOC容器中有多个与目标Bean类型一致的Bean,这样的情况下,Spring将无法推断哪个Bean最合适该属性。所以不能运行自己主动装配
  • byName(依据名称自己主动装配):必须将目标Bean的名称和属性名设置的全然同样
  • constructor(通过构造器自己主动装配):当Bean中存在多个构造器时,此种自己主动装配方式将会非常复杂,不推荐使用
XML配置里的Bean自己主动装配的缺点
  • 在Bean配置文件中设置autowire属性进行自己主动装配将会配置Bean的全部引用属性。然而。若仅仅希望装配个别属性时。autowire属性就不够灵活了
  • autowire属性要么依据类型自己主动装配,要么依据名称自己主动装配,不能两者兼而有之
  • 普通情况下,在实际的项目中非常少使用自己主动装配功能,由于和自己主动装配功能所带来的优点比起来,明白清晰的配置文档更有说服力一些

代码实例具体解释:

文件夹结构:(仅仅用到com.coslay.beans.autowire)

Address.java

package com.coslay.beans.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 + "]";
} }

Car.java

package com.coslay.beans.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 + "]";
} }

Person.java

package com.coslay.beans.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
+ "]";
} }

Main.java

package com.coslay.beans.autowire;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"beans-autowire.xml"); Person person = (Person) ctx.getBean("person");
System.out.println(person);
}
}

beans-autowire.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="address" class="com.coslay.beans.autowire.Address" p:city="Beijing" p:street="HuiLongGuan"></bean> <bean id="car" class="com.coslay.beans.autowire.Car" p:brand="Audi" p:price="30000"></bean> <!-- <bean id="person" class="com.coslay.beans.autowire.Person" p:name="Tom" p:address-ref="address" p:car-ref="car"></bean> --> <!--
能够使用autowire属性指定自己主动装配的方式
byName依据bean的名字和当前bean的setter风格的属性名进行自己主动装配,若有匹配的,则进行自己主动装配,若没有匹配的,则不装配
byType依据bean的类型和当前bean的属性的类型进行自己主动装配.若IOC容器中有一个以上的类型匹配的bean,则抛异常
-->
<bean id="person" class="com.coslay.beans.autowire.Person" p:name="Tom" autowire="byType"></bean>
</beans>

spring 配置bean-自己主动装配的更多相关文章

  1. Spring -- Bean自己主动装配&amp;Bean之间关系&amp;Bean的作用域

    对于学习spring有帮助的站点:http://jinnianshilongnian.iteye.com/blog/1482071 Bean的自己主动装配 Spring IOC 容器能够自己主动装配 ...

  2. Spring(九):Spring配置Bean(二)自动装配的模式、Bean之间的关系

    XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean,需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式,模式包含:byType,byName, ...

  3. IDEA02 利用Maven创建Web项目、为Web应用添加Spring框架支持、bean的创建于获取、利用注解配置Bean、自动装配Bean、MVC配置

    1 环境版本说明 Jdk : 1.8 Maven : 3.5 IDEA : 专业版 2017.2 2 环境准备 2.1 Maven安装及其配置 2.2 Tomcat安装及其配置 3 详细步骤 3.1 ...

  4. Spring配置bean的详细知识

    在Spring中配置bean的一些细节.具体信息请参考下面的代码及注释 applicationContext.xml文件 <?xml version="1.0" encodi ...

  5. spring 配置bean以及配置依赖 (2)

    目录 一.使用ref引用其他对象 二.通过有参构造器创建对象 1 通过index精确定位参数顺序 三.引用bean 1 使用内部bean 2 使用list,set 3 声明集合类型 四.其他 1 使用 ...

  6. Spring配置 bean

    在 Spring 的 IOC 容器里配置 Bean <bean id="helloWorld" class="com.xiya.spring.beans.Hello ...

  7. spring 配置bean

    Main(测试方法) public class Main { public static void main(String[] args) { //1.创建Spring 的IOC容器对象: //spr ...

  8. Spring -- 配置bean的三种方法

    配置通过静态工厂方法创建的bean public class StaticBookFactory { //静态工厂方法: public static Book getBook(String bookN ...

  9. Spring配置Bean,为属性赋值

    SayHello的实体类: package com.langchao; /** * @ClassName: SayHello * @description: * @author: ZhangYawei ...

随机推荐

  1. Tiny4412 学习

    平台: Tiny4412ADK + S700 + 4GB FlashU-boot: 友善之臂提供的开源U-boot Linux: linux-3.0.31 Android: android_4_1_2 ...

  2. xamarin.from ToolbarItem 字体大小和颜色更改

    在xamarin.from 上我们经常会使用到页面跳转方式, new NavigationPage(newp page()){ BarBackgroundColor=Color.FromHex(&qu ...

  3. dedecms安装完成后登录后台出现空白

    今天家里的电脑上新装DEDE5.7后台登陆后竟然一片空白经过分析代码,发现登录验证的时候用到了这个函数session_register(我的环境:win7+PHP5.4.3+Apache2.2.22+ ...

  4. NVIDIA® Quadro® 四路缓冲 3D立体方案

    http://www.nvidia.cn/object/quadro_pro_graphics_boards_cn.html NVIDIA® Quadro® 专业显卡让地球学家以及时装设计师等许多专业 ...

  5. git工程迁移(修改提交服务器地址)方法

    git remote set-url [--push] <name> <newurl> [<oldurl>]git remote set-url --add [-- ...

  6. 【京东个人中心】——Nodejs/Ajax/HTML5/Mysql爬坑之静态页面

    一.引言 接着上一篇,京东个人中心的所有功能数据分析完成之后,现在需要把静态页面完成,实现过程中要用到的技术有:Bootstrap.html5表单新特性等.除此之外,还要利用Node.js的Expre ...

  7. Jquery.ajax报parseerror Invalid JSON错误的原因和解决方法:不能解析

    (默认: 自动判断 (xml 或 html)) 请求失败时调用时间.参数有以下三个:XMLHttpRequest 对象.错误信息.(可选)捕获的错误对象.如果发生了错误,错误信息(第二个参数)除了得到 ...

  8. mysql导出导入所有数据库

    导出所有数据库 mysqldump -uroot -p123456 --all-databases > /home/aa.sql 导入所有数据库 mysql -uroot -p123456 &l ...

  9. jQuery 获取DOM元素

    (function (window){ var arr=[]; var VP=function(selector,context){ return new VP.fn.init(selector,co ...

  10. 【转载】viewState详解

    作者:Infinities Loop 概述 ViewState是一个被误解很深的动物了.我希望通过此文章来澄清人们对 ViewState的一些错误认识.为了达到这个目的,我决定从头到尾详细的描述一下整 ...