IOC:
所谓的控制反转就是将创建对象的权利交于spring,当我们要用此对象时直接从spring工厂中获取即可。
编写步骤:
1、导入jar包
spring-framework-3.2.0.RELEASE\libs下的jar包:4个核心包
spring-beans-3.2.0.RELEASE.jar;spring-context-3.2.0.RELEASE.jar
spring-core-3.2.0.RELEASE.jar;spring-expression-3.2.0.RELEASE.jar
spring-framework-3.0.2dependencies\org.apache.commons\com.springsource.org.apache.commons.logging\1.1.1下的一个1依赖包:
com.springsource.org.apache.commons.logging-1.1.1.jar
2、主配置文件:
位置:任意,开发时一般放置在src下
名称:任意,开发时一般为applicationContext.xml
内容:必须要添加schema约束.
约束文件位置:spring-framework-3.2.0.RELEASE\docs\spring-framework-reference\html\xsd-config.html
例如:
<?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 id="userServiceId" class="cn.itcast.a_ioc.UserService"></bean>
</beans>
3、测试API:
测试代码:
//spring创建
//1 加载配置文件
String xmlPath = "cn/itcast/a_ioc/beans.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
//2 从spring工厂获取,通过bean id获得
UserService userService = (UserService) applicationContext.getBean("userServiceId");
userService.addUser();
BeanFactory:是spring的核心接口,是spring框架的基础设施,面向的是spring本身。它是一个通用类工厂,用来创建bean的。
ApplicationContext:在BeanFactory的基础上提供了更多面向应用的功能,它还提供了国际化支持和框架事件体系,
更易于创建实际应用。它是面向的使用spring框架开发的开发者们,一般的开发场合都用它而非底层的BeanFactory
BeanFactory和ApplicationContext的实例化区别:
BeanFactory:在初始化容器时,并未实例化bean,而是在第一次调用getBean()时,也就是第一次访问实例时才实例化目标bean.
applicationContext:在初始化上下文时,所有的bean都被实例化。
DI:
依赖:is a :继承关系;has a 依赖关系
Dependency Injection 依赖注入:在创建A时一并将A中的B也创建了并将B设置给A
<bean id="bId" class=""></bean>
<bean id="aId" class="">
<property name="b" ref="bId"></property>
</bean>
Myeclipse schema约束配置:
MyEclipse”--->“Files and Editors”---->“XML”--->“XML
Catalog-->“User Specified Entries””添加约束。
注意:
key type:选择schema location
key:找到相对应的约束命名空间复制URL地址。
如果有问题,可以在Cache中remove All缓存的约束配置。
装配bean:基于xml
方式:
1)、默认装配
2)、静态工厂装配:
创建工厂,工厂的所有方法均为静态。
配置:
<!-- 静态工厂实例bean -->
<bean id="personService" class="cn.itcast.a_ioc.factory.MyFactory" factory-method="createPersonService"></bean>
3)、自定义工厂装配:
<!-- 自定义工厂实例bean -->
<!-- 获取自定义工厂 -->
<bean id="myFactory" class="cn.itcast.a_ioc.factory.MyFactoryy"></bean>
<bean id="personServicee" factory-bean="myFactory" factory-method="createPersonService"></bean>
作用域:
<!-- 配置需要创建的对象 -->
<bean id="userServiceId" class="cn.itcast.a_ioc.UserService" scope="作用域"></bean>
作用域取值:
singleton,单例(默认值)。
prototype,多例。每次执行getBean() 都将获得新的实例。应用:与struts整合时,action多例。
request:servlet request 作用域,一次请求一个新对象。
session:servlet session作用域,一次会话一个新对象。
装配bean的生命周期:
<bean id="" class="" init-method="初始化方法" destroy-method="销毁方法">
销毁的前提:
1)、必须是单例的。2)、spring容器必须是关闭的。
注意:
对于spring容器的关闭可以通过ApplicationContext的子类ClassPathXmlApplicationContext提供的close()方法完成
属性注入:
手动注入:
手动注入基于xml配置:
1)、构造方法注入:
<!-- 构造方法注入
<constructor-arg> 用于配置构造方法的一个参数
name:参数的名称,一般不用。
index:参数索引值,从0开始。
如果只使用index,使用第一个匹配上的构造方法
type:参数的类型,建议使用全限定类名。java.lang可以省略
value:普通值
ref:引用值,一般另一个bean对象
例如:name
<constructor-arg name="uid" value="1"></constructor-arg>
<constructor-arg name="username" value="2"></constructor-arg>
例如:index + type ,一般开发中常用
<constructor-arg index="0" type="java.lang.String" value="1"></constructor-arg>
<constructor-arg index="1" type="java.lang.Integer" value="2"></constructor-arg>
-->
2)、setter注入:
<!-- setter方法注入
<property> 给属性进行注入,必须提供setter方法
name : 属性的名称
value:普通数据
ref : 另一个bean引用名称
-->
集合注入:
<!-- 集合
<property> 子标签
基本
普通值:<property value=""> 等效于 <property><value>
引用值:<property ref=""> 等效于 <property><ref>
集合
<list> List集合
<array> 数组
<set> Set集合
<map> Map集合
<entry key="" value="">
<props> Properties对象
<prop key="">..</prop>
-->
3)、接口注入(spring不支持)
p命名空间:就是对setter注入的简化版。
使用p命名空间之前要先配置命名空间:
复制xmlns="http://www.springframework.org/schema/beans"
将其改为xmlns:p="http://www.springframework.org/schema/p"并放置在xsi上面。
使用:<bean id="" class="" p:属性名="普通值" p:属性名-ref="引用值">
<property value=""> <property ref="">
装配bean:基于注解
必须在xml配置扫描类
<context:component-scan base-package="......">
1.组件,通用。取代<bean id="" class="">
@Component
2.web开发,
@Controller web层
@Service service层
@Repository dao层
3.注入
普通值:@Value
引用值
@Autowired 默认按照类型注入
@Qualifier(名称) + @Autowired 结合 按照名称注入 取代 <property>
@Resource(名称)
4.其他
作用域
@Scope("prototype") 取代 <bean id="" class="" scope="">
初始化或销毁
@PostConstruct 取代<bean id="" class="" init-method="">
@PreDestroy 取代<bean id="" class="" destroy-method="">
相关推荐
**Spring--IOC** Spring框架是Java企业级应用开发中的核心组件,它的全称是Spring Inversion of Control(控制反转)或Dependency Injection(依赖注入)。这是一个轻量级的框架,它通过简化Java应用的开发和管理,...
Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- ...
这个jar文件"Spring-ioc-jar"包含了实现Spring IOC功能所需的关键类和接口,是学习和使用Spring IOC技术的基础。 Spring框架的IOC容器是其核心组件,主要由`ApplicationContext`和`BeanFactory`两个接口代表。`...
1. **spring-core-3.2.0.RELEASE.jar**:这是Spring框架的核心模块,提供了基本的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)功能,以及资源加载和通用工具类。 2. **spring-...
**Spring IoC 框架详解** Spring框架是Java开发中的一个核心组件,它提供了许多功能,其中最重要的一项就是Inversion of Control(IoC),也称为Dependency Injection(DI)。IoC容器是Spring的核心,它负责管理...
Spring-Ioc-注册
标题“Spring-MVC+Spring-IOC+Spring-JdbcTemple”揭示了这个项目或教程是关于如何集成并使用Spring框架的三个核心模块:Spring MVC、Spring IOC(Inversion of Control,控制反转)以及Spring JDBC Template。...
1. **spring-core**: 提供了基础的IoC(Inversion of Control)容器,它是Spring框架的核心。IoC允许开发者通过配置来管理对象的生命周期和依赖关系,使得代码更加松耦合。 2. **spring-beans**: 支持Bean工厂和XML...
Spring的核心设计理念是依赖注入(Dependency Injection,简称DI),它通过反转控制(Inversion of Control,IoC)来降低组件之间的耦合度。这种设计模式使得应用程序的配置和业务逻辑分离,从而提高了代码的可测试...
spring-IOC的一些笔记心得
在Spring 1.0版本中,核心概念主要围绕IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)展开。IoC使得对象的创建和管理由Spring容器负责,而不是由代码直接创建,这样降低...
spring-**cntext**-4.3.6.RELEASE.jar:spring提供了基础IOC功能上的扩展服务,提供了很多企业级服务的支持,如邮件服务,任务调度,JNDI定位,EJB集成,远程访问,缓存以及各种试图层框架的封装等。 spring-...
Spring框架是Java开发中的核心组件,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。Spring-4.0.3是Spring框架的一个...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器处理,使得开发者可以更专注于业务逻辑的编写,而不是对象的生命周期管理。下面,我们将深入探讨Spring...
spring-ioc学习 新手可以下过来学习下, spring-ioc简介
根据给定的文件信息,以下是对Spring框架及其IOC特性详细的知识点总结: ### Spring框架概述 Spring是一个全方位的应用程序框架,旨在提供一个轻量级、非侵入式的开发环境,适用于构建各种类型的企业级应用。它由...
spring 3.2.4 Realease 的所有jar包: spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-...
在Java Spring框架中,Spring IoC(Inversion of Control,控制反转)是核心特性之一,它使得应用程序的组件之间的依赖关系不再由代码直接管理,而是交由Spring IoC容器负责。这种设计模式降低了代码间的耦合,提高...
其中,有4个是Spring的基础包,对应Spring核心容器的4个模块,是Spring项目...spring-context-5.1.8.RELEASE.jar //提供在基础IoC上的扩展服务 spring-expression-5.1.8.RELEASE.jar //提供对Spring表达式语言的支持
在这个名为“spring-demo02-IOC-DI案例”的压缩包中,我们将深入探讨这两个核心概念以及如何在实际项目中应用它们。 首先,让我们来理解什么是IOC,即控制反转。在传统的编程模式中,对象通常自行创建或管理其依赖...