您的位置 首页 java

阿里P7浅谈Java的Spring Bean

1、简单java 类,实现 serial izable 接口

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: <bean id=”person” class=”com.curtis.bean.Person”> <property name=”name” value=”Jerry”></property> <property name=”age” value=”27″ /> </bean> 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 标签进行赋值<value>Jerry</value>

bean 标签、id属性、class属性

property 标签 name属性、value属性

案例2:

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

this.name=name;

}

<bean id=”person” class=”com.curtis.bean.Person”>

<constructor-arg value=”Tom”></constructor-arg>

</bean>

说明:通过构造方式的给属性赋值的方式,需要定义无参的构造方法;如果出现构造方法的重载需要通过索引(index)值,或者参数数据类型进行明确到底调用的是哪个构造方法;

index 索引从0开始

type java.lang.String 等

上面两种可以混用

如果只有一个有参的构造方法,可以一句参数列表依次给参数赋值。

如果是数值类型,数据会自动进行转换(String转成数值类型);

<bean id=”car” class=”com.atguigu.spring.helloworld.Car”>

<constructor-arg value=”KUGA” index=”1″></constructor-arg>

<constructor-arg value=”ChangAnFord” index=”0″></constructor-arg>

<constructor-arg value=”250000″ type=”float”></constructor-arg>

</bean>

案例3:

特殊字符

<value><![CDATA[<深圳>]]></value>

案例4:

引用类型 ref

人有汽车,一个Person 的类,也有一个Car 的类

分别通过<bean></bean>定义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 文件中

<bean id=”person” class=”com.curtis.bean.Person”>

<property name=”name” value=”Curtis” />

<property name=”car” ref=”car”></property>

</bean>

<bean id=”car” class=”com.curtis.bean.Car”>

<property name=”brand” value=”Baoma” />

<property name=”price” value=”500000″ />

</bean>

案例5:

内部bean

<bean id=”person” class=”com.curtis.bean.Person”>

<property name=”car”>

<bean class=”com.curtis.bean.Car”>

<property name=”brand” value=”Audi”></property>

</bean>

</property>

</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> 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<Car> getCar() {

return car;

}

public void setCar(List<Car> car) {

this.car = car;

}

@Override

public String toString() {

return “Person [name=” + name + “, age=” + age + “, car=” + car + “]”;

}

public Person() {

// TODO Auto-generated constructor stub

}

}

<bean id=”car1″ class=”com.curtis.bean.Car”>

<property name=”brand” value=”Baoma” />

<property name=”price” value=”500000″ />

</bean>

<bean id=”person” class=”com.curtis.bean.Person”>

<property name=”name” value=”Curtis” />

<property name=”car”>

<list>

<bean class=”com.curtis.bean.Car”>

<property name=”brand” value=” 比亚迪 ” />

</bean>

<ref bean=”car1″/>

</list>

</property>

</bean>

写在最后:欢迎留言讨论,私信“Java”或“架构资料”有惊喜!加关注,持续更新!!!

文章来源:智云一二三科技

文章标题:阿里P7浅谈Java的Spring Bean

文章地址:https://www.zhihuclub.com/194173.shtml

关于作者: 智云科技

热门文章

网站地图