3、HelloSpring
ioc控制反转
控制:谁来控制对象的创建,传统应用的对象是由程序本身控制创建的,使用spring后,对象是由spring来创建的。
反转:程序本身不创建对象,而是变成被动的接受对象。
依赖注入:利用set方法来进行注入。
IOC是一种编程思想,由主动的编程变成被动的接收。
到了现在,彻底不用在程序中去改动了,要实现不同的操作,只需要在xml配置文件中进行修改,所谓ioc,可理解成一句话:对象由spring来创建、管理、装配。
层级关系:
<?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="userDaoImpl" class="com.kuber.dao.UserDaoImpl"/>
<bean id="userDaomethod1Impl" class="com.kuber.dao.UserDaoMethod1Impl"/>
<bean id="userDaomethod2Impl" class="com.kuber.dao.UserDaoMethod2Impl"/>
<bean id="userServiceImpl" class="com.kuber.service.UserServiceImpl">
<property name="userDao" ref="userDaoImpl"/>
</bean>
<!--
ref:引用Spring容器中创建好的对象
value:基本数据类型的具体的值,前面name是基本数据类型的名称
-->
</beans>
userServiceImpl.java
public class UserServiceImpl implements UserService{
private UserDao userDao;
//利用动态实现值的注入(动态注入)
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void getUser() {
userDao.getUser();
}
}
测试用例:
@Test
public void spring1(){
/*获取ApplicationContext,拿到spring容器*/
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("userServiceImpl");
userServiceImpl.getUser();
}
效果: