ApplicationContext.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 name="userDao" class="com.igeek.dao.UserDaoImpl"/>-->
<bean name="userDao" class="com.igeek.dao.UserDao"/>
<!-- id 唯一标识 等同于name-->
<bean id="userDaoImpl" class="com.igeek.dao.UserDaoImpl"/>
<!-- 3种方式-->
<!-- property value 传递普通值-->
<!-- ref 传递被spring管理的对象,引用-->
<bean name="user" class="com.igeek.entity.User">
<property name="name" value="zhangsan"/>
<property name="age" value="25"/>
<property name="dao" ref="userDao"/>
</bean>
<!-- 根据构造器下表注入 参数个数相同时,优先匹配string类型,再去数据转换-->
<bean name="user1" class="com.igeek.entity.User">
<constructor-arg index="0" value="dieqi"/>
<constructor-arg index="1" value="23"/>
<!-- <constructor-arg type="java.lang.String" value="zhangsan"/>-->
<!-- <constructor-arg type="int" value="30"/>-->
</bean>
<!-- p标签注入-->
<bean name="user2" class="com.igeek.entity.User" p:name="XiaoQiao" p:age="17" p:password="123456"/>
</beans>
如下是Test1的测试类
package com.igeek.test;
import com.igeek.dao.UserD;
import com.igeek.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Test1 {
public static void main(String[] args) {
// ApplicationContext apx = new ClassPathXmlApplicationContext("applicationContext.xml");
FileSystemXmlApplicationContext apx = new FileSystemXmlApplicationContext("C:\\Users\\Easion.W\\IdeaProjects\\Spring\\src\\main\\resources\\applicationContext.xml");
// getBean(name id 都可以访问) 根据类型type找bean对象
UserD userDao = (UserD)apx.getBean("userDao");
userDao.insert(null);
// ((ClassPathXmlApplicationContext)apx).close();
((FileSystemXmlApplicationContext)apx).close();
}
}
如下是Test2的测试类
package com.igeek.test;
import com.igeek.dao.UserD;
import com.igeek.entity.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test2 {
public static void main(String[] args) {
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// User user = (User) classPathXmlApplicationContext.getBean("user");
// User user1 = (User) classPathXmlApplicationContext.getBean("user1");
User user2 = (User) classPathXmlApplicationContext.getBean("user2");
System.out.println(user2);
((ClassPathXmlApplicationContext)classPathXmlApplicationContext).close();
}
}
User类
package com.igeek.entity;
import com.igeek.dao.UserDao;
public class User {
private String name;
private int age;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private UserDao dao;
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", password='" + password + '\'' +
", dao=" + dao +
'}';
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public UserDao getDao() {
return dao;
}
public User() {
}
public void setDao(UserDao dao) {
this.dao = dao;
}
public User(String name, int age, UserDao dao) {
this.name = name;
this.age = age;
this.dao = dao;
}
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;
}
}
UserD
package com.igeek.dao;
public interface UserD {
void insert(Object o);
}
UserDao
package com.igeek.dao;
public class UserDao implements UserD{
public void insert(Object o) {
System.out.println("userdao");
}
}
UserDaoImpl
package com.igeek.dao;
public class UserDaoImpl implements UserD {
public void insert(Object o) {
System.out.println("userdaoimpl");
}
}
UserService
package com.igeek.service;
import com.igeek.dao.UserD;
import com.igeek.dao.UserDaoImpl;
public class UserService {
UserD dao = new UserDaoImpl();
}
- XML命名空间和Schema的使用,通过命名空间xmlns定义命名空间URI,通过schemaLocation指定命名空间的Schema文件位置。
- 通过<beans>标签定义一个Spring容器。
- 使用<bean>标签定义一个Bean的定义。在这里,使用"class"属性指定Bean的类,并使用"name"属性或"id"属性指定Bean的名称或唯一标识。
- 使用<property>标签设置Bean的属性值。在这里,通过"name"属性指定属性名称,通过"value"属性指定属性的值,或通过"ref"属性指定引用另一个被Spring管理的对象。
- 使用<constructor-arg>标签设置Bean的构造函数参数值。通过"index"属性指定参数的索引位置,通过"value"属性指定参数的值,或通过"type"属性指定参数的类型。
- 使用<p:propertyName>标签设置Bean的属性值。在这里,通过"p:name"属性指定属性名称,通过"p:value"属性指定属性的值。