bean的表述
类别 | 描述 |
名称 | bean |
类型 | 标签 |
功能 | 将对象交给spring容器管理 |
格式 | <beans> <bean/> <bean><bean/> <beans/> |
属性列表 | id:可以通过id获取对应的bean,在容器中id必须是唯一 class:bean的类型,即配置的bean的全路径类名 |
示例 | <bean id="studentDao" class="com.ioc.dao.impl.StudentDaoImpl"/> <bean id="studentService" class="com.ioc.service.impl.StudentServiceImpl"> <property name="studentDao" ref="studentDao"/> </bean> |
编写流程
- 添加依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.2.RELEASE</version> </dependency>
- 创建applicationContext.xml (spring核心配置文件)
- 在配置文件中添加bean
<bean id="studentDao" class="com.ioc.dao.impl.StudentDaoImpl"/>
- 通过applicationContext接口注入(DI注入对象)
// 初始化Spring的ApplicationContext,加载applicationContext.xml文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 从IOC容器中获取StudentDao Bean,并强制转换为StudentDao类型 StudentDao studentDao = (StudentDao) context.getBean("studentDao");
- 处理业务逻辑层service
- 将service接口中的new出的dao对象去除,只保留接口
修改为private StudentDao studentDao=new StudentDaoImpl();
private StudentDao studentDao;
- 添加get,set方法
/** * 获取学生数据访问对象(DAO) */ public StudentDao getStudentDao() { return studentDao; } /** * 设置学生数据访问对象(DAO) */ public void setStudentDao(StudentDao studentDao) { this.studentDao = studentDao; }
- 在配置文件中添加bean并通过添加关系
<!-- 配置Student服务的bean --> <bean id="studentService" class="com.ioc.service.impl.StudentServiceImpl"> <!-- 配置service和dao的关系,配置都是通过get和set拿到对象,添加前需要添加get,set--> <property name="studentDao" ref="studentDao"/> </bean>
- 编写测试类
public static void main(String[] args) { // 初始化Spring的ApplicationContext,加载applicationContext.xml文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 从IOC容器中获取StudentDao Bean,并强制转换为StudentDao类型 StudentDao studentDao = (StudentDao) context.getBean("studentDao"); // 遍历并打印所有Bean的定义名称,用于验证Bean是否正确加载 for (String beanDefinitionName : context.getBeanDefinitionNames()) { System.out.println(beanDefinitionName); } System.out.println("--------------------------------------------------"); // 调用StudentDao的save方法 studentDao.save(); System.out.println("--------------------------------------------------"); // 从Spring上下文中获取StudentService Bean StudentService studentService = (StudentService) context.getBean("studentService"); // 调用StudentService的save方法 studentService.save(); }
bean的实例化--构造方法
在service实现中添加构造方法
public StudentServiceImpl() {
System.out.println(1);
System.out.println(2);
}
添加测试方法
public static void main(String[] args) {
// 初始化Spring的ApplicationContext,加载applicationContext.xml文件
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 从Spring上下文中获取StudentService Bean
StudentService studentService = (StudentService) context.getBean("studentService");
// 调用StudentService的save方法
studentService.save();
}
控制台打印,输出了1和2