Spring框架学习笔记(二)IOC & DI容器xml基本配置

通过第一篇学习笔记对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>

一行代码直接结束。

这一篇就先写这么多吧。。。

发布了25 篇原创文章 · 获赞 14 · 访问量 7200

猜你喜欢

转载自blog.csdn.net/sdau_20171819/article/details/104170157