通过第一篇学习笔记对Spring框架有了一个大体的了解之后,开始记录正题。
首先记录配置的前提就是创建项目。
好,那这篇文章就从头开始。。。。。
(一) 创建一个Java项目
好,第一步很简单,学习Spring框架的前提首先就是先学会搭建框架。具体的搭建框架的文章没写,剑指 搭建Spring框架
恭喜第一部搭建框架完成 可以顺利的编写代码了。。。
首先创建一个包,在创建一个实体类,本文以Person类 Car类为例
Person类
package Car;
public class Person {
private String name;
private int age;
private Car car;
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 Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";
}
}
Car类
package Car;
public class Car {
private String brand;
private String corp;
private double price;
private int maxspeed;
public Car(String brand, String corp, double price) {
super();
this.brand = brand;
this.corp = corp;
this.price = price;
}
public Car(String brand, String corp, int maxspeed) {
super();
this.brand = brand;
this.corp = corp;
this.maxspeed = maxspeed;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price + ", maxspeed=" + maxspeed + "]";
}
}
配置Car的xml文件。
右键Src选择Spring bean 创建一个XML配置文件,首先配置car类
1. 全类名属性配置Car
(注意 Car类中需要添加get set函数 不需要写构造方法)
<bean id="c1" class="Car.Car">
<property name="brand" value="Baoma"></property>
<property name="corp" value="Beijing"></property>
<property name="price" value="300000"></property>
<property name="maxspeed" value="260"></property>
</bean>
2.全类名构造器配置Car (注意Car类中必须加构造方法,创建的构造方法用于配置,不需要写Get Set函数)
<bean id="car" class="Car.Car">
<constructor-arg value="aodi"></constructor-arg>
<constructor-arg value="shanghai"> </constructor-arg>
<constructor-arg value="300000"></constructor-arg>
</bean>
3. 需要注意的是构造器配置中如果类中有多个构造方法
① . 按索引匹配入参 即通过index 注入
②. 按类型匹配入参 通过type注入
4. 如果注入的值中有特殊字符
用<value> <![CDATA[ 字符 ]]></value> 方法注入
<bean id="car2" class="Car.Car">
<constructor-arg value="baoma" type="java.lang.String"></constructor-arg>
<constructor-arg type="java.lang.String">
<value> <![CDATA[上海~]]></value>
<!-- 通过CDATA给参数赋值 用于字面值有特殊字符的字符串 -->
</constructor-arg>
<constructor-arg value="240" type="int"></constructor-arg>
</bean>
5. 引入其他类型的bean 即在Person类中引用Car类
可以直接通过 ref 引入配置完成的car的id。
<property name="car" ref="car"></property>
6. 内部引入其他类型的car,用于需要引用的Car类还没有配置,可以在Person类中直接配置
这里需要注意的就是内部配置的Car 就不能被外部调用 所以不用写ID
<bean id="person" class="Car.Person">
<property name="name" value="Tom"></property>
<property name="age" value="20"></property>
<!-- 内部Bean 不能被外部使用 只能在内部被调用 不用写ID-->
<property name="car">
<bean class="Car.Car">
<constructor-arg value="Ford"></constructor-arg>
<constructor-arg value="北京"></constructor-arg>
<constructor-arg value="240" type="int"></constructor-arg>
</bean>
</property>
7. 配置null属性
简单粗暴 直接null
<constructor-arg><null></null></constructor-arg>
8. 集合属性
(如一个人有多辆车,那么配置Person属性的时候就要考虑车这一个集合了)
① . 在 Spring中可以通过一组内置的 xml 标签(例如: <list>, <set> 或 <map>) 来配置集合属性。
<bean id="person2" class="Car2.Person">
<property name="name" value="Rose"></property>
<property name="age" value="21"></property>
<property name="cars" >
<!-- 直接利用list 以及ref调用 -->
<list>
<ref bean="car"></ref>
<ref bean="car2"></ref>
</list>
</property>
</bean>
加一个Map集合的
<!-- 配置Map集合属性赋值 -->
<bean id="person3" class="Car2.Person2">
<property name="name" value="Kobe"></property>
<property name="age" value="22"></property>
<property name="cars">
<map>
<entry key="AA" value-ref="car"></entry>
<entry key="BB" value-ref="car2"></entry>
</map>
</property>
</bean>
②. 还可以通过内部配置bean配置加入
<list>
<ref bean="car"></ref>
<ref bean="car2"></ref>
<bean class="Car.Car">
<constructor-arg value="Ford"></constructor-arg>
<constructor-arg value="北京"></constructor-arg>
<constructor-arg value="2600000" type="double"></constructor-arg>
</bean>
</list>
③. 引入Util命名空间
创建一个list 后面可以直接引用外部bean “cars”
<!-- Util配置 -->
<util:list id="cars">
<ref bean="car"/>
<ref bean="car2"/>
</util:list>
9. P命名空间 (据说不常用,但是我个人感觉配置超级简单!!)
第一步引入 P 的命名空间(具体操作不会的话就是,点击代码框左下角有一个 namespace 然后点击 p 点确定就ok了)
开始配置
<!-- P命名空间配置 -->
<bean id="person4" class="Car2.Person" p:name="James" p:age="35" p:cars-ref="cars"></bean>
一行代码直接结束。
这一篇就先写这么多吧。。。