第二章 IoC 概念与简单的使用

2.1 IoC的概念

        Inverseof Control,控制反转是Spring容器的内核,AOP、声明式事务等功能都是在此基础上进行的。

        IoC主要功能是依赖关系的转移。应用的本身不负责依赖对象的创建和维护,而是由Spring容器负责。控制权就由应用转移到了外部容器。

        IoC的主要功能由控制反转来解释并不是很好理解。所以提出了新的概念DependencyInjection.

        DI依赖注入,调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以转移对某一接口实现类的依赖。也就是在运行期,由外部容器(Spring)动态地将所依赖的对象注入到组件中去。

2.2 简单的使用

a、创建工程,导入spring的核心jar包

       如果是Web项目。直接把spring3的核心Jar包放到项目的WEB-INF/lib目录下既可。      

       因为我们教学是使用MyEclipse平台,测试的时候是用Java Project。这里使用MyEclipse导入Jar包。

右击项目名  ->  Build Path  ->  Configure Build Path。出现Properties for 项目名的窗口。

选择Libraries -> Add Library -> User Library

如果是第一次使用User Library(个人库)。那么你必须先新建一个Library。点击User Libraries...出现下面的窗口。

New -> 填写User library name -> OK.。 如果之前已经有了个人的Spring
Library。那么这一步可以跳过。

选中你刚才创建的Library。点击Add JARs。然后把你所需要的所有的Jar包加进Library中来。 如果之前已经有了个人的Spring
Library。那么这一步也可以跳过。

选中你的个人Library。OK就可以。

b、写一个接口及一个接口实现类,如UserDao及UserDaoImpl

其实这里我们只需要一个类而已。但在实际项目开发的过程中,我们一般会使用面向接口编程。所以这里使用接口与接口实现的形式。

public interface UserDao {
	public void save();
}

public class UserDaoImpl implements UserDao {
	public void save() {
		System.out.println("保存用户...");
	}
}

然后在下面spring的配置文件中,把接口实现类交由Spring容器管理.

c、spring配置文件(如:applicationContext.xml)

这个配置文件可以上网找,或者在官方提供方的demo中获取。

你也可以通过MyEclipse导入Spring的功能来得到一个配置文件。不过这样做的话,MyEclipse会给你的项目导入一些它给提供的Spring
Jar包。完成功能导入后,把这些Jar包移除就可以了。

你还可以直接新建一个xml文件,把我下面的配置拷贝过去就可以。

详情可参考MyEclipse 导入Hibernate功能一章:http://blog.csdn.net/p_3er/article/details/8965305

spring配置文件一般放在源码根目录(src)下:

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<!-- 把一个刚才的接口实现类交由spring管理 -->
	<bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl"></bean>

</beans>

d、通过main方法测试

//启动spring容器
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});

		//通过容器获取到对象,并注入到userDao中去.
                //getBean("userDao")中的userDao是刚才Spring配置文件中的 bean id

UserDao userDao = (UserDao) context.getBean("userDao");

				
时间: 2024-08-01 14:20:46

第二章 IoC 概念与简单的使用的相关文章

第二章 IoC Bean的初始化与延迟加载

在默认情况下,Spring的ApplicationContext容器在启动的时候,会自动实例化所有singleton的Bean并缓存在容器中.虽然启动时会花费一些时间,但带来两个好处: 1.对Bean提前实例化操作会及早发现一些潜在的配置问题: 2.Bean以缓存的方式保存,当运行期使用到该Bean的时候无需再实例化,加快运行的效率. 如果用户不希望容器启动的时候提前实例化singleton的Bean,可以通过lazy-init属性进行控制: <bean id="userDao"

第二章 IoC 构造器注入

UserDao与UserDaoImpl: public interface UserDao { public void save(); } public class UserDaoImpl implements UserDao { public void save() { System.out.println("保存用户..."); } } UserService接口及其实现类UserServiceImpl: public interface UserService { public

第二章 IoC 三种实例化Bean的方式

2.3.1使用类构造器实例化(最经常使用) 类似2.2中的使用:http://blog.csdn.net/p_3er/article/details/9091577 <bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl"></bean> 注:这里的id也可以换成name <bean name="userDao" class="c

第二章 IoC Annotation注入

1.命名空间 使用Annotation的方式,需要在spring的配置文件中配置命名空间.命名空间中,隐式地注册了多个对注解进行解析处理的处理器. a.引入context命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.spri

第二章 IoC Spring自动扫描和管理Bean

通过Spring容器自动扫描和管理Bean,我们不再需要在配置文件中使用<bean>标签管理Bean. 2.9.1引入context命名空间 如何引入命名空间及命名空间的写法已经在之前的章节中详细说过.具体可参考以下: http://blog.csdn.net/p_3er/article/details/9231307 2.9.2打开扫描功能 <context:component-scan base-package="cn.framelife.spring"/>

第二章 IoC Bean的作用域

作用域的配置(scope的内容): <bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl" scope="singleton"></bean> 2.4.1singleton单例(默认) 整个Spring容器服务中只有一个Bean对象.一般情况下都使用这种作用域. 2.4.2 prototype 每次从容器中获取到的都是一个新的实例.相当于每次都

《秩序之美——网页中的网格设计》——第二章 网格的基本概念

第二章 网格的基本概念 在为各式多媒体工作的经验丰富的平面设计师中,众所周知的是:使用网格进行设计具有多种优势.其中主要的优势有必要在这里重述一下. 网格为信息的展示增添秩序.连续性和和谐性. 网格可向读者预示出信息的所在,更有助于信息的交流. 在保持与原先展示内容总体一致的前提下,网格可使添加新内容变得更容易. 网格促使各个设计方式彼此协作而不是相互削弱. 这些只是你将读到的支持网格设计观点的一部分内容,但是到目前为止,它们已被主要写入网格如何有利于传统平面设计的读物中.而让我感到困惑的事实是

第二章 单元测试的基本概念和核心技法

第二章 单元测试的基本概念和核心技法 2.1 良好的单元测试--定义 我们已经了解了程序员需要单元测试,下面我们来给单元测试作一个完整的定义: ● 定义: 单元测试是一段自动执行的代码,它调用被测类或被测方法,然后验证关于被测类或被测方法逻辑行为的假设确实成立.单元测试几乎总是用单元测试框架(unit testing framework)来写就的,单元测试是易于写就.执行快速.完全自动化.值得依赖.易于阅读并易于维护的. 这个定义有点长,但是它却包含了大量重要信息: ● 单元测试的测试重点是被测

简单MVVM教程(改进版) - 第二章

问题描述 第一章见.上一次,我只是开了个头而已,然而在这一章中,我们将看到一点实际的代码了.我构想了很久,怎样让新手能快速掌握我想要传达的知识,然后我得出一个结论:一定一定要简单化,并且要有看的见摸的着的代码实例.好吧,我们开始.打开你的VS2010,新建一个WPF项目,命名为MvvmTutorial即可.紧接着,在当前Solution添加4个文件夹,分别为:Infrastructure,Views,ViewModels,Models.然后,把App.xaml改成如下:<Applicationx