目录
一、根据名字进行自动装配--byName
二、根据类型进行自动装配 byType
本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。
一、根据名字进行自动装配--byName
UserService 类中调用了UserDao 类中的delete()方法
java">public class UserService {UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void delete(){userDao.delete();}
}
java">public class UserDao {public void delete(){System.out.print("删除用户信息");}
}
配置如下:
给需要注入对象的bean加上autowire="byName"
注意一:根据名字进行自动装配也是基于set注入方式实现的,所以需要写set方法。set注入一定要有无参构造方法。
注意二:根据名字进行自动装配的时候,被注入的对象的bean的id不能随便写。
必须是set方法的方法名去掉set,剩下的单词首字母变小写
<?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,就在哪个类进行自动装配--><!--根据名字进行自动装配,注意:自动装配也是基于set注入方式实现的--><bean id="UserServiceBean" class="com.linctSpring6.service.UserService" autowire="byName"></bean><!--id一般也叫做bean的名称--><!--根据名字进行自动装配的时候,被注入的对象的bean的id不能随便写--><!--必须是set方法的方法名去掉set,剩下的单词首字母变小写--><bean id="userDao" class="com.linctSpring6.dao.UserDao"></bean></beans>
我们写一个测试类来测试这个方法
java"> @Testpublic void testUserServiceByName(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("set-bean-autowire.xml");UserService userService = applicationContext.getBean("UserServiceBean", UserService.class);userService.delete();}
可以看到,根据名字自动装配bean成功
二、根据类型进行自动装配 byType
UserService 类中调用了UserDao 类中的delete()方法和StudentDao类中creat()方法
java">public class UserService {UserDao userDao;StudentDao studentDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void setStudentDao(StudentDao studentDao) {this.studentDao = studentDao;}public void userServicemethod(){userDao.delete();studentDao.creat();}}
java">public class UserDao {public void delete(){System.out.println("删除用户信息");}
}
java">public class StudentDao {public void creat(){System.out.println("创建学生信息");}
}
配置如下:
根据类型进行自动装配 byType也是通过set方法来注入的。
byType方法的使用非常简单,给需要注入对象的bean加上autowire="byType",spring就会自动根据类型帮我们的对象注入对应的bean,非常强大。
java"> <!--根据类型进行自动装配--><bean id="UserServiceBean" class="com.linctSpring6.service.UserService" autowire="byType"></bean><bean id="userDao" class="com.linctSpring6.dao.UserDao"></bean><bean id="studentDao" class="com.linctSpring6.dao.StudentDao"></bean>
可以看到,根据类型自动装配bean成功
注意点:如果同一个配置文件中写注入了2个相同的baen,则会报错
所以根据类型进行自动装配,某一类型的实例只能有一个。
报错如下:
以上就是我对bean的自动装配(自动化注入)的理解啦,希望能帮到大家,有问题的地方欢迎大家一起讨论!
后续会不断更新作品,欢迎大家一起讨论学习。❤❤❤