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

简介: <h2 lang="zh-CN" class="cjk"><a name="_Toc357859923"></a><span style="font-size:12px; font-family:Cambria,serif"><span lang="en-US"><br></span></span></h2> <h1><span style="font-size:24px"><spa


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、写一个接口及一个接口实现类,如UserDaoUserDaoImpl

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

public interface UserDao {
	public void save();
}

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


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


cspring配置文件(如: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");




目录
相关文章
|
1天前
|
云安全 人工智能 自然语言处理
AI说的每一句话,都靠谱吗?
阿里云提供AI全栈安全能力,其中针对AI输入与输出环节的安全合规挑战,我们构建了“开箱即用”与“按需增强”相结合的多层次、可配置的内容安全机制。
|
5天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
8天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
3天前
|
消息中间件 安全 NoSQL
阿里云通过中国信通院首批安全可信中间件评估
近日,由中国信通院主办的 2025(第五届)数字化转型发展大会在京举行。会上,“阿里云应用服务器软件 AliEE”、“消息队列软件 RocketMQ”、“云数据库 Tair”三款产品成功通过中国信通院“安全可信中间件”系列评估,成为首批获此认证的中间件产品。此次评估覆盖安全可信要求、功能完备性、安全防护能力、性能表现、可靠性与可维护性等核心指标,标志着阿里云中间件产品在多架构适配与安全能力上达到行业领先水平。
301 192
|
3天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
332 165
|
2天前
|
开发者
「玩透ESA」ESA启用和加速-ER在加速场景中的应用
本文介绍三种配置方法:通过“A鉴权”模板创建函数并设置触发器路由;在ESA上配置回源302跟随;以及自定义响应头。每步均配有详细截图指引,帮助开发者快速完成相关功能设置,提升服务安全性与灵活性。
302 2
|
7天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
456 93