实验六:Spring中的Bean的管理
一、实验目的
1.掌握Bean标签及其属性的使用
2.熟悉Bean的实例化
3.掌握Bean的作用域
4.掌握Bean的装配方式
5.熟悉Bean的生命周期
二、实验内容
1.使用基于XML的方式装配Bean
2.使用基于注解的方式装配Bean。
三、实验步骤
1.使用基于XML的方式装配Bean
(1)属性setter方法注入
① 编写用户对象类
在src\main\java文件夹中创建com\sun文件夹并创建User2类
package com.sun;
public class User2 {
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "id=" + id + ", name=" + name + ", password=" + password;
}
private int id;
private String name;
private String password;
}
② 获取Bean的配置信息
在src\main\resources文件夹中创建applicationContext-User2.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
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user2" class="com.sun.User2">
<property name="id" value="2"></property>
<property name="name" value="孙昊楠"></property>
<property name="password" value="5678"></property>
</bean>
</beans>
③ 编写测试类
在src\main\java\com\sun文件夹中创建测试类TestUser2.java
package com.sun;
导入相关依赖....
public class TestUser2 {
public static void main(String[] args)throws Exception {
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext-User2.xml");
User2 user2 = applicationContext.getBean("user2", User2.class);
System.out.println(user2);
}
}
运行结果:
(2)构造方法注入
① 编写用户类
在src\main\java\com\sun文件夹中创建User1类
package com.sun;
public class User1 {
private int id;
private String name;
private String password;
public User1(int id,String name,String password){
this.id=id;
this.name=name;
this.password=password;
}
public String toString(){
return "id="+id+"name="+name+"password="+password;
}
}
② 配置Bean的信息
在src\main\resources文件夹中创建applicationContext-User.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
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user1" class="com.sun.User1">
<constructor-arg name="id" value="1"></constructor-arg>
<constructor-arg name="name" value="孙昊楠"></constructor-arg>
<constructor-arg name="password" value="1234"></constructor-arg>
</bean>
</beans>
③ 编写测试类
在src\main\java\com\sun文件夹中创建测试类TestUser1.java
package com.sun;
导入相关包....
public class TestUser1 {
public static void main(String[] args)throws Exception{
ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationContext-User.xml");
User1 user1=applicationContext.getBean("user1", User1.class);
System.out.println(user1);
}
}
运行结果:
2.使用基于注解的方式装配Bean。
(1)导入依赖
在pom.xml中添加:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
(2)创建XML配置文件
在src\mian\resources文件夹下创建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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.sun" />
</beans>
(3)定义实体类
在src\main\java\com\sun文件夹下创建entity文件夹并创建User实体类
package com.sun.entity;
导入相关包...
@Component("user")
@Scope("singleton")
public class User {
@Value("1")
private int id;
@Value("孙昊楠")
private String name;
@Value("1234")
private String password;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString(){
return "id="+id+",name="+name+",password="+password;
}
}
(4)定义DAO层
在src\main\java\com\sun文件夹下创建dao包并创建接口
public interface UserDao {
public void save();
}
(5)实现DAO层
在src\main\java\com\sun\dao文件夹下创建UserDaoImpl作为UserDao实现类
package com.sun.dao;
导入相关包...
@Repository("userDao")
public class UserDaoImpl implements UserDao{
public void save(){
ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationContext.xml");
User user=(User) applicationContext.getBean("user");
System.out.println(user);
System.out.println("执行UserDaoImpl.save()");
}
}
(6)定义Service层
在src\main\java\com\sun文件夹下创建service文件夹并创建UserService接口作为业务逻辑层接口
package com.sun.service;
public interface UserService {
public void save();
}
(7)实现Service层
在src\main\java\com\sun\service下创建UserServiceImpl作为UserService的实现类
package com.sun.service;
导入相关包...
@Service("userService")
public class UserServiceImpl implements UserService{
@Resource(name="userDao")
private UserDao userDao;
public void save(){
this.userDao.save();
System.out.println("执行UserServiceImpl.save()");
}
}
(8)定义Controller层
在src\main\java\com\sun下创建controller文件夹并创建UseController类作为控制层
package com.sun.controller;
导入相关包....
@Controller
public class UserController {
@Resource(name="userService")
private UserService userService;
public void save(){
this.userService.save();
System.out.println("执行UserController.save()");
}
}
(9)定义测试类
在src\main\java\com\sun下创建AnnotationTest.java
package com.sun;
导入相关包....
public class AnnotationTest {
public static void main(String[] args){
ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationContext.xml");
UserController usercontroller=(UserController)
applicationContext.getBean("userController");
usercontroller.save();
}
}
运行结果: