IoC容器的使用
通过之前的学习,了解了IoC容器、bean以及元数据metadata。
使用IoC容器的顺序:编写Beans的类型及接口→配置元数据→启动IoC容器(同时IoC容器初始化bean)→从IoC容器中取出bean使用
编写Beans的类型
public interface IUserDao {
public User getUser();
}
public class UserDaoImplMySQL implements IUserDao{
public User getUser() {
User u = new User();
u.setName("测试用户");
return u;
}
}
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
配置元数据metadata(通过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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="SpringTest.Test1.UserDaoImplMySQL"/>
</beans>
注:只需要关注< bean >标签,其他的都是规定,使用的时候从官方文档复制即可。
稍微解释一下,更多的元数据配置在之后的博客中介绍。
- bean标签,就是告诉IoC容器,要创建一个bean对象
- bean标签的id属性,容器实例化的bean对象的唯一标识
- bean标签的class属性,bean对象的真实类型的全限定名
上面这句配置的含义:IoC容器实例化一个类型为SpringTest.Test1.UserDaoImplMySQL的bean,它在容器中的唯一表示为userDao
初始化容器以及从容器中取出bean使用
初始化容器的方法:由于使用的元数据的形式是XML,可以使用以下方法进行读取并初始化IoC容器。
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
从容器中取bean:创建好容器后,配置好的bean已经被容器初始化完成,拿来用就可以。
context.getBean("bean的唯一标识");
使用容器的getBean()方法,将bean的id作为参数,就可以取出配置好的bean。
具体的例子如下:
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
IUserDao userDao = (IUserDao) context.getBean("userDao");
System.out.println(userDao.getUser());
}
}