一:sutowire属性

1、no:默认值,禁用自动装配;

2、byName:根据属性名称自动装配;

3、byType:根据属性类型自动装配;

4、constructor:通过构造方法自动装配,不推荐使用;

//创建两个类
package com.zzj.vo;
public class Student { private int age; public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} } package com.zzj.vo; public class School {
private Student student; public Student getStudent() {
return student;
} public void setStudent(Student student) {
this.student = student;
} }

byName模式(属性的名称必须与之对应否则会报错)

<!--byName模式id与之匹配-->
<bean id="student" class="com.zzj.vo.Student">
<property name="age" value="12"></property>
</bean> <bean class="com.zzj.vo.School" autowire="byName"></bean>

byType模式(不需要属性名)

<!--byType模式-->
<bean class="com.zzj.vo.Student">
<property name="age" value="12"></property>
</bean> <bean class="com.zzj.vo.School" autowire="byType"></bean>
//测试
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
System.out.println(context.getBean(School.class).getStudent().getAge());

二:bean的生命周期

通过构造方法或工厂方法创建bean对象——>为bean属性赋值——>调用 bean 的初始化方法,即init-method指定方法——>bean实例化完毕,可以使用——>容器关闭, 调用 bean 的销毁方法,即destroy-method指定方法。

init-method:在设置bean的属性后执行的自定义初始化方法,注意:①、该方法不能有参数;②、对象每创建一次就会执行一次该方法;

destroy-method:该参数中的方法只有bean标签属性scope为singleton且关闭SpringIOC容器时才会被调用,注意:该方法不能有参数

下面我们创建一个类来观察init开始的时间以及destroy结束的时间

//Student类
package com.zzj.vo; public class Student { private int age; static{
System.out.println("静态代码块");
} {
System.out.println("非静态代码块");
} public Student(){
System.out.println("构造方法");
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
System.out.println("set后");
} public void init(){
System.out.println("init");
} public void destroy(){
System.out.println("destroy");
}
}
<!--applicaton.xml中的代码-->
<bean id="stu" class="com.zzj.vo.Student" init-method="init" destroy-method="destroy" p:age="12"></bean>
//测试
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
System.out.println(context.getBean(Student.class).getAge());
context.close();

测试结果如下(可见init是在set后开始的):

 三:继承  parent属性

parent属性:子bean 从父bean 中继承配置;子bean 也可以覆盖从父bean 继承过来的配置;注意:该属性不允许配置多个值。

//子类(Son)和父类(Parent)
package com.zzj.vo; public class Parent {
private int grade;
private String name;
private String city;
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
} } package com.zzj.vo; public class Son {
private int grade;
private String name;
private String city;
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Son [grade=" + grade + ", name=" + name + ", city=" + city + "]";
}
}
<!--application.xml-->
<bean id="parent" class="com.zzj.vo.Parent">
<property name="grade" value="1"></property>
<property name="city" value="郑州市"></property>
<property name="name" value="Tom"></property>
</bean> <bean id="son" class="com.zzj.vo.Son" parent="parent">
<property name="name" value="Jesse"></property>
</bean>
//测试
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
System.out.println(context.getBean(Son.class));

结果如下(可见子类继承了父类的配置,并可作出更改):

bean的autowire属性及其生命周期的更多相关文章

  1. Spring - bean的autowire属性(自动装配)

    当我们要往一个bean的某个属性里注入另外一个bean,我们会使用<property> + <ref/>标签的形式.但是对于大型项目,假设有一个bean A被多个bean引用注 ...

  2. C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型

    Technorati 标签: C,标识符,作用域,命名空间,链接属性,生命周期,存储类型,scope,name space,linkage,storage durations,lifetime 无论学 ...

  3. Vue01 vue基础、mvvm、ES6z知识点、计算属性、生命周期

    Vue案例: <body> <div id="app"> <!--第一部分--> <fieldset> <legend> ...

  4. react学习记录(三)——状态、属性、生命周期

    react的状态state React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM) class Clock extends React.Compon ...

  5. Vue实例属性/方法/生命周期

    一 实例属性 var app = new Vue(); app.$el ===>返回当前挂在DOM对象. app.$data ===>返回当前实例data里面的数据 app.$option ...

  6. DataSnap控件TDSServerClass属性LifeCycle生命周期管理(From李维)

    DelphiXE2中的DataSnap中提供了三种不同的生命周期,开发人员可以在TDSServerClass控件的LifeCycle特性中设定,下面分别说明每一种生命周期的意义 1. Server:在 ...

  7. bean在容器上的生命周期

            初始化两种方法:         1,使用init-method属性指定那个方法在bean依赖关系设置好后自动执行.         2,实现initializingBean接口 实现 ...

  8. 【转】C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型

    参考网址:http://blog.csdn.net/zhanglianpin/article/details/41575849 绝对的经典.

  9. Spring之BeanFactory及Bean生命周期

    1.spring通过BeanFactory灵活配置.管理bean,Spring对管理的bean没有任何特别的要求,完全支持对POJO的管理: 2.BeanFactory有个ApplicationCon ...

随机推荐

  1. 「IOI2014」Wall 砖墙

    题目描述 给定一个初始元素为 \(0\) 的数列,以及 \(K\) 次操作: 将区间 \([L, R]\) 中的元素对 \(h\) 取 \(max\) 将区间 \([L, R]\) 中的元素对 \(h ...

  2. Django 学习之cookie与session

    一.cookie和session的介绍 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie ...

  3. 设计模式课程 设计模式精讲 9-2 原型模式coding

    1 课堂演练 1.1 super.toString 作用 1.2 为什么要使用克隆方法呢 2 代码解析 2.1 代码解析1(使用原型模式之前) 2.2 代码解析2(使用原型模式默认方式(浅克隆)) 2 ...

  4. JPG加入RAR文件原理详解

    在水木看到有人上传了一张图片,说如果将其后缀改为rar,解压后会有别的文件,试了一下,果然如此.用十六进制的编辑器看了看,发现的确有理. 先是,文件头部是以JPG格式起始的,如下: ......JFI ...

  5. <每日一课学习笔记> "mysql为什么加了索引还是慢查询"

    long_query_time mysql判断慢查询的依据是,sql执行时间与系统参数 long_query_time 作比较,如果大于这个参数,就会将这条sql计入慢查询语句中.long_query ...

  6. 一 Java语言基础

    1 标识符: 用来标识类名.变量名.方法名.类型名.数组名.文件名的有效字符序列. 由字母.美元符.下划线.数字组成,不能以数字开头,如  int 6a = 1; 2 基本数据类型8个: 整数4个:字 ...

  7. 为安卓手机刷上手机kali系统Nethunter

    kali Nethunter是一个装在手机上的kali,集成了kali的工具包,hid,无线攻击等等. 本文主要叙述如何安装此系统并正确的配置.不让你走弯路. 首先我们拒绝傻瓜安装软件 kali ne ...

  8. 从数据库中查询所有表及所有字段的SQL语句

    从数据库中查询所有表及所有字段的SQL语句 由于一个小项目的需要,近日完成一个从数据库中查询所有表及所有字段的方法,其实用两条SQL语句就可以完成. Sql Server版:列出当前DB中所有表:se ...

  9. Django:验证码相关问题

    http://blog.csdn.net/csapr1987/article/details/7728315 https://zhidao.baidu.com/question/13837387222 ...

  10. java虚拟机之内存分配

    Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配.同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收. JDK1.8之前的堆内存示意图: 从上图可以看出堆内存分为新 ...