IOC:是一种编程思想,有主动编程变为被动接收
IOC的实现是通过ioc容器来实现,ioc容器-BeanFactory (工厂模式,由spring容器来创建)
beans.xml
ref:引用对象
<?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就是java对象,由spring容器创建和管理 -->
<bean name="hello" class="spring.beans.Hello">
<property name="name" value="马化腾"></property>
</bean>
<bean id="mysqlDao" class="spring.dao.impl.UserDaoMySqlImpl"></bean>
<bean id="oracleDao" class="spring.dao.impl.UserDaoOracleImpl"></bean>
<bean id="service" class="spring.service.impl.UserServiceImpl">
<property name="userDao" ref="mysqlDao"></property>
</bean>
</beans>
test.java
package spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.dao.impl.UserDaoMySqlImpl;
import spring.dao.impl.UserDaoOracleImpl;
import spring.service.UserService;
import spring.service.impl.UserServiceImpl;
public class test {
public static void main(String[] args) {
UserServiceImpl userService = new UserServiceImpl();
userService.setUserDao(new UserDaoMySqlImpl());
userService.getUser();
System.out.println("---------------");
userService.setUserDao(new UserDaoOracleImpl());
userService.getUser();
ApplicationContext con=new ClassPathXmlApplicationContext("beans.xml");
UserService us=(UserService)con.getBean("service");
us.getUser();
}
}
运行:
注意:
property标签的name属性和bean的set方法后跟的名称一样