阿里P7淺談Java的Spring Bean

1、簡單java 類,實現 Serializable 接口

package com.curtis.bean;

import java.io.Serializable;

@SuppressWarnings("serial")

public class Person implements Serializable {

private String name;

private Integer age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + "]";

}

}

2、spring jar包

commons-logging-1.1.3.jar

spring-aop-4.3.3.RELEASE.jar

spring-beans-4.3.3.RELEASE.jar

spring-context-4.3.3.RELEASE.jar

spring-core-4.3.3.RELEASE.jar

spring-expression-4.3.3.RELEASE.jar

3、spring 配置文件

名字叫:applicationContext.xml 這個名稱可以自己定義,沒必要非要叫applicationContext.xml

applicationContext.xml 文件中

案例1: ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); System.out.println(ctx.getBean("person",Perspn.class));

說明:property 標籤中的name 屬性對應java bean中set 方法後面的內容,後面的value是java bean 對應屬性賦值;

getBean方法如果不指明第二個參數,就需要強制類型轉換

定義的bean如果在applicationContext.xml 文件中只出現一次,可以通過類名.class 的方式,無需傳第二個參數,不需要進行強制類型轉換

Person p1=(Person) ctx.getBean("person");

System.out.println(ctx.getBean(Perspn.class));

java bean 中有多個屬性,可以給部分屬性進行賦值,沒有被賦值的屬性是對應數據類型的默認值

由於是通過反射的方式,建議明文在java bean 中定義無參數的構造方法

結束標籤可以在property 上面直接關閉

也可以通過value 標籤進行賦值Jerry

bean 標籤、id屬性、class屬性

property 標籤 name屬性、value屬性

案例2:

public Person(String name) { // 構造方法

this.name=name;

}

說明:通過構造方式的給屬性賦值的方式,需要定義無參的構造方法;如果出現構造方法的重載需要通過索引(index)值,或者參數數據類型進行明確到底調用的是哪個構造方法;

index 索引從0開始

type java.lang.String 等

上面兩種可以混用

如果只有一個有參的構造方法,可以一句參數列表依次給參數賦值。

如果是數值類型,數據會自動進行轉換(String轉成數值類型);

案例3:

特殊字符

]]>

案例4:

引用類型 ref

人有汽車,一個Person 的類,也有一個Car 的類

分別通過定義Person、Car

Person bean中可以通過ref 對Car 進行引用

package com.curtis.bean;

import java.io.Serializable;

@SuppressWarnings("serial")

public class Car implements Serializable {

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 + "]";

}

public Car() {

// TODO Auto-generated constructor stub

}

}

package com.curtis.bean;

import java.io.Serializable;

@SuppressWarnings("serial")

public class Person implements Serializable {

private String name;

private Integer age;

private Car car;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public Car getCar() {

return car;

}

public void setCar(Car car) {

this.car = car;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";

}

public Person() {

}

public Person(String name) {

this.name=name;

}

}

applicationContext.xml 文件中

案例5:

內部bean

說明:bean 在property 標籤內部;內部bean 不需要指明id屬性

案例6:

list

一個人可能有多輛車

package com.curtis.bean;

import java.io.Serializable;

import java.util.List;

@SuppressWarnings("serial")

public class Person implements Serializable {

private String name;

private Integer age;

private List car;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public List getCar() {

return car;

}

public void setCar(List car) {

this.car = car;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";

}

public Person() {

// TODO Auto-generated constructor stub

}

}

寫在最後:歡迎留言討論,私信“Java”或“架構資料”有驚喜!加關注,持續更新!!!


分享到:


相關文章: