IoC,控制反转,在程序中不主动使用new产生对象,将对象的创建控制权转移到由程序转移到外部,降低代码耦合度。
Spring提供了一个IoC容器,用来充当IoC思想的外部。IoC容器负责对象的创建,初始化等工作,被创建管理的对象称为Bean
实例:
未优化代码:
数据层 BookDaoImpl.java
public class BookDaoImpl implements BookDao{
public void save(){
System.out.println("book dao save...");
}
}
业务层 BookServiceImpl.java
public class BookServiceImpl implements BookService{
private BookDao bookDao = new BookDaoImpl();
public void save(){
bookDao.save();
}
}
app.java
public class app{
public static void main(String{} args){
BookService bookService = new BookServiceImpl();
bookService.save();
}
}
优化后代码
xml文件applicationContext.xml
bean标签标识配置bean,id表示给配置的bean起名字,class属性表示给bean确定类型。
<beans>
<bean class="com.itheima.dao.impl.BookDaoImpl" id="bookDao"/>
<bean id="bookService" class="com.itheima.dao.impl.BookServiceImpl"/>
</beans>
app.java
public class app{
public static void main(String{} args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookService = BookService(ctx.getBean(bookService))
bookService.save();
}
}