前置条件:导入spring中需要的jar包
Spring的核心就是IOC(控制反转,及在获取对象时需要需new一个对象,使用IOC便是让别人给你一个对象)和AOP(面向切面)。
IOC的基本使用:
1、实体类创建:
package com.msb.bean;
public class Person {
private int id;
private String name;
private int age;
private String gender;
public Person(){};
public Person(int id, String name, int age, String gender) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
2、ioc.xml配置文件的创建:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
bean标签,表示要创建的bean对象
id:唯一标识符
class:要创建的bean对象的完全地址
默认是单例的
-->
<bean id="person" class="com.msb.bean.Person">
<!--
property:属性及赋值
这里的传值是通过实体类中的setXXX传的,且是根据setXXX中的XXX实现的,若XXX与实体类中不对应,传值便会报错
-->
<property name="id" value="1"></property>
<property name="name" value="zhangsan"></property>
<property name="age" value="20"></property>
<property name="gender" value="男"></property>
</bean>
<!--根据带参构造方法进行赋值
参数name的属性值是根据构造方法中的参数决定的,
name属性可以省略,但是要注意顺序
也可通过index属性根据下标方式进行指定,从0开始
-->
<bean id="person2" class="com.msb.bean.Person">
<constructor-arg name="id" value="2"></constructor-arg>
<constructor-arg name="name" value="lisi"></constructor-arg>
<constructor-arg name="age" value="21"></constructor-arg>
<constructor-arg name="gender" value="女"></constructor-arg>
</bean>
<!--若实体类对象中包含多个带参构造方法,且包含的参数不同赋值默认会赋值至最后一个,
但可以通过type属性指定参数类型决定赋值的构造方法
这里是type属性设置为java.lang.Integer,实体类中定义为int,需更换实体类变量类型
-->
<bean id="person3" class="com.msb.bean.Person">
<constructor-arg name="id" value="3"></constructor-arg>
<constructor-arg name="name" value="wangwu"></constructor-arg>
<constructor-arg name="age" value="22" type="java.lang.Integer"></constructor-arg>
</bean>
<!--通过p命名空间对属性进行赋值,使用之前需要在头文件创建p的xmls-->
<bean id="person5" class="com.msb.bean.Person" p:id="4" p:name="zhangwu" p:gender="男" p:age="23">
</bean>
</beans>
3、测试类:
package com.msb.test;
import com.msb.bean.Person;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
public static void main(String[] args) {
//读取bean中配置文件
/**
* applicationContext:表示IOC容器的入口,想要获取对象的话就必须创建该类
* 该类有两个实现配置文件的实现类
* ClassPathXmlApplicationContext:从classpath中读取数据
* FileSystemXmlApplicationContext:从当前文件系统读取数据
*/
/**
* AppliCationContext是IOC容器的接口,可通过获取此对象获取容器中的对象
* 单例模式下,对象在Spring容器创建的时候就已经创建完成了
*/
ApplicationContext context = new ClassPathXmlApplicationContext("ioc.xml");
//获取具体的bean对象,需要强制类型装换
Person person = (Person) context.getBean("person");
/**
* 也可通过以下方式获取
* “person”是在ioc.xml中的id值
* Person person1 = context.getBean("person", Person.class);
* Person bean = context.getBean(Person.class);
*/
System.out.println(person);
}
}
总结
其实就是通过xml文件定义bean对象,再对对象属性进行赋值,赋值可通过属性直接赋值,也就是通过property标签直接赋值,也可以通过构造方法进行赋值constructor标签,然后要获取对象就是通过ApplicationContext进行获取。