传统的对象创建及维护是由应用对象本身维护及创建。
public class PersonService {
private PersonDao personDao=new PersonDaoImpl();
public void save(Person person){
personDao.save(person);
}
}
那么所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责额。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。
所谓依赖注入是指:
在运行期,由外部容器动态地将依赖对象注入到组件中。
那么使用Spring有什么好处呢?
1.降低了组件之间的耦合度,实现各层之间的解耦。
2.可以使用容器提供的众多服务。
3.容器提供了单例模式的支持,不需要自己手写实现代码,提高了开发效率。
4.提供AOP,很容易实现如权限拦截,运行监控等功能。
5.提供了众多的辅助类,能够加快应用的开发,如jdbcTemplate,hibernateTemplate等。
6.对主流的应用框架进行了集成,如struts,hibernate等。
实例化Spring容器有2种方式:
1.在类路径下寻找配置文件来实例化容器
ApplicationContext ctx=new ClassPathXmlApplicationContext(new String[]{"spring.xml"});
2.在文件路径下寻找配置文件来实例化容器(不推荐使用)
ApplicationContext ctx=new FileSystemXmlApplcationContext(new String[]{"d:\\spring.xml"});
ps:Spring的配置文件可以指定多个,可以通过String数组传入
三种实例化bean的方法
1.使用类构造器实例化
<bean id="xxx" class="xxx">
2.使用静态工厂方法实例化
<!--factory-method工厂方法名 -->
<bean id="xxx" class="xxx" factory-method="method">
3.使用工厂方法实例化
<bean id="xxxFactory" class="xxxx"/>
<bean id="xxx" factory-bean="xxxFactory" factory-method=""/>
bean的作用域:
1.singleton
在IOC容器中bean只定义一个对象实例,默认情况下会在容器启动时初始化bean,但我们可以指定bean的lazy-init=true来延迟初始化bean,这时候,只有第一次获取bean才会被初始化。
如果想对所有bean都延迟初始化,可以在跟节点beans设置defaul-lazy-init="true",如果想在方法中打开某些特定的资源,可以配置init-method="init"方法,如果想在bean销毁之前关闭特定的资源destory-method="destory"
2.prototype
每次从bean都获取新的对象,第一次获取bean时才被初始化。
分享到:
相关推荐
spring学习笔记
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
Spring学习笔记( spring视频笔记)
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc
根据提供的压缩包文件名,我们可以推测这是一个逐步学习Spring的系列笔记。从"Spring_day1"开始,可能涵盖了Spring的基础概念、环境搭建和基本配置。"Spring_day2"可能涉及了依赖注入和AOP的深入讲解。"Spring_day3...
“Java Spring学习笔记”是一份宝贵的资源,专门为想要学习和掌握Java Spring框架的开发者而设计。这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...
"尚学堂Spring学习笔记" 本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在...
Spring学习笔记2涵盖了Spring框架的核心概念和重要特性,旨在帮助开发者深入理解并熟练掌握Spring的使用。 1. **依赖注入(Dependency Injection, DI)**:这是Spring最核心的设计原则,它允许对象之间的依赖关系在...
在本篇Spring学习笔记中,我们将深入探讨Spring的基本概念,包括bean的配置、依赖注入、IOC容器以及Bean的实例化方式。 首先,Spring中的核心概念是bean。Bean是Spring框架中的基本构建块,它们是被管理的对象,...
这份"Spring学习笔记"涵盖了Spring框架的基础到高级应用,对于想要深入理解并掌握Spring的开发者来说是一份宝贵的资料。 1. **Spring概述**:Spring是一个开源的Java平台,主要设计用于简化企业级应用开发。它提供...
### 马士兵Spring学习笔记知识点汇总 #### 一、面向接口编程(面向抽象编程) **概念:** 面向接口编程是指在设计系统时,尽量通过接口来定义各个组件之间的交互方式,而不是直接依赖于实现类。这种方式使得系统...