博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识 Spring(04)---(bean属性)
阅读量:6970 次
发布时间:2019-06-27

本文共 7393 字,大约阅读时间需要 24 分钟。

bean属性

1. id、name都可以表示bean的名字
 id:以前属性中不能有特殊字符,现在放特殊字符也没关系
 name:属性可以有特殊字符

文件目录:

代码:配置文件:applicationContext.xml

Test.java

package com.neuedu.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {	public static void main(String[] args) {				ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");		Object bean = ac.getBean("car");		Object bean2 = ac.getBean("car");		System.out.println(bean == bean2);	} }

Car.java

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

输出:

<bean id="car" class="com.neudeu.po.Car"></bean> 只配置一个 car,

 Object bean = ac.getBean("car");Object bean2 = ac.getBean("car");  无论获取几次但都是同一个对象

 System.out.println(bean == bean2);故输出为 ture

2.scope属性:bean的生存范围
        1.singleton 单例(默认)
        2. proptotype (原型)每次创建新的对象

代码:配置文件:applicationContext.xml

Test.java

package com.neuedu.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {	public static void main(String[] args) {				ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");		Object bean = ac.getBean("car");		Object bean2 = ac.getBean("car");		System.out.println(bean == bean2);	} }

car.java

package com.neudeu.po;public class Car {	private String brand;	private double price;		public Car() {		System.out.println("Car构造方法");	}	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 + "]";	}		}

输出:

修改为 singleton

输出:

    

3.autowire 自动装配(可读性太差)
    1.byName    按名字装配
    2.byType 按类型装配

文件目录:

代码:配置文件:applicationContext.xml

Test.java

package com.neuedu.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {	public static void main(String[] args) {				ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");			} }

idCard.java

package com.neudeu.po;public class idCard {		public idCard() {		System.out.println("IdCard...");	}	private String CardNo;		public String getCardNo() {		return CardNo;	}		public void setCardNo(String cardNo) {		CardNo = cardNo;	}}

Person.java

package com.neudeu.po;import com.neudeu.po.idCard;import java.util.List;public class Person {	private idCard idCard;		private String name;	private int age;		private List
cars; public List
getCars() { return cars; } public void setCars(List
cars) { this.cars = cars; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", cars=" + cars + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public idCard getIdCard() { return idCard; } public Person(){ System.out.println("Person..."); } public void setIdCard(idCard idCard) { System.out.println("setIdCard..."); this.idCard = idCard; } }

输出:

<bean id ="person" class="com.neudeu.po.Person" autowire="byType" >

autowire="byType" :自动注入(按类型),自动的从 Spring 中找有没有  Person 里需要的 idCard 类型的对象,有点化就自动的将其注入到 Person 的属性里面去

代码:配置文件:applicationContext.xml

输出:autowire="byName" :自动注入(按名字装配)

4. lazy-init    延迟加载
    false : 立即加载(默认)
    true : 用到时加载

代码:配置文件:applicationContext.xml

输出:与前文相比,Person 都没有执行(延迟加载)

修改代码:Test.java

package com.neuedu.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {	public static void main(String[] args) {				ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");		Object bean = ac.getBean("person");  //加入代码		System.out.println(bean);   //加入代码	} }

输出:只有执行 Object bean = ac.getBean("person"); 后才会执行后续代码

5  init-method="init"    

在容器对这个bean初始化时执行该方法

代码:配置文件:applicationContext.xml

//修改代码

Person.java

package com.neudeu.po;import com.neudeu.po.idCard;import java.util.List;public class Person {	private idCard idCard;		private String name;	private int age;		private List
cars; public List
getCars() { return cars; } public void setCars(List
cars) { this.cars = cars; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", cars=" + cars + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public idCard getIdCard() { return idCard; } public Person(){ System.out.println("Person..."); } public void setIdCard(idCard idCard) { System.out.println("setIdCard..."); this.idCard = idCard; } public void init() { System.out.println("init..."); //修改代码 } }

输出:bean初始化时执行 init 方法,输出 init...

6. destroy-method="destroy":

容器关闭时执行该方法

代码:配置文件:applicationContext.xml

Person.java

package com.neudeu.po;import com.neudeu.po.idCard;import java.util.List;public class Person {	private idCard idCard;		private String name;	private int age;		private List
cars; public List
getCars() { return cars; } public void setCars(List
cars) { this.cars = cars; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", cars=" + cars + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public idCard getIdCard() { return idCard; } public Person(){ System.out.println("Person..."); } public void setIdCard(idCard idCard) { System.out.println("setIdCard..."); this.idCard = idCard; } public void init() { System.out.println("init..."); } public void destroy(){ System.out.println("destroy..."); //修改代码 } }

输出:并没有输出 destory...  要在关闭容器时才会执行

修改代码:Test.java

package com.neuedu.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {	public static void main(String[] args) {	ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");  //修改代码		Object bean = ac.getBean("person");		System.out.println(bean);						ac.close();	} }

输出:执行关闭容器,输出 destory...

你可能感兴趣的文章
【转】产品描述英文专用术语
查看>>
Nginx 502 bad gateway问题的解决方法
查看>>
11. Container With Most Water - Medium
查看>>
基于MFC简单图片裁剪工具
查看>>
IEnumerable对象的Distinct方法重写
查看>>
斐波那契数列(水题)板子
查看>>
Python多进程
查看>>
UISearchBar的应用
查看>>
解决Android中图片圆角——.9图
查看>>
retain和copy的区别 #import @class 的区别
查看>>
oracle group by 行转列 分析执行计划
查看>>
CSS基础语法
查看>>
使用栈实现队列(1)(Java)
查看>>
N皇后问题
查看>>
安装系统需要设置BIOS
查看>>
WPF 浏览器应用程序(page页面)如何全屏
查看>>
用户角色权限
查看>>
java读取xml(当xml放在包里时)
查看>>
图解Raid5数据存储的原理
查看>>
多线程面试题系列(1):多线程笔试面试题汇总
查看>>