`

spring--IOC

 
阅读更多

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--IOC** Spring框架是Java企业级应用开发中的核心组件,它的全称是Spring Inversion of Control(控制反转)或Dependency Injection(依赖注入)。这是一个轻量级的框架,它通过简化Java应用的开发和管理,...

    Spring5 框架 ---- IOC容器 ---- 代码

    Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- ...

    Spring-ioc-jar

    这个jar文件"Spring-ioc-jar"包含了实现Spring IOC功能所需的关键类和接口,是学习和使用Spring IOC技术的基础。 Spring框架的IOC容器是其核心组件,主要由`ApplicationContext`和`BeanFactory`两个接口代表。`...

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    1. **spring-core-3.2.0.RELEASE.jar**:这是Spring框架的核心模块,提供了基本的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)功能,以及资源加载和通用工具类。 2. **spring-...

    maven-spring-ioc

    **Spring IoC 框架详解** Spring框架是Java开发中的一个核心组件,它提供了许多功能,其中最重要的一项就是Inversion of Control(IoC),也称为Dependency Injection(DI)。IoC容器是Spring的核心,它负责管理...

    Spring-Ioc-注册

    Spring-Ioc-注册

    Spring-MVC+Spring-IOC+Spring-JdbcTemple

    标题“Spring-MVC+Spring-IOC+Spring-JdbcTemple”揭示了这个项目或教程是关于如何集成并使用Spring框架的三个核心模块:Spring MVC、Spring IOC(Inversion of Control,控制反转)以及Spring JDBC Template。...

    官方原版完整包 spring-framework-5.3.1.RELEASE.zip

    1. **spring-core**: 提供了基础的IoC(Inversion of Control)容器,它是Spring框架的核心。IoC允许开发者通过配置来管理对象的生命周期和依赖关系,使得代码更加松耦合。 2. **spring-beans**: 支持Bean工厂和XML...

    spring-framework-master

    Spring的核心设计理念是依赖注入(Dependency Injection,简称DI),它通过反转控制(Inversion of Control,IoC)来降低组件之间的耦合度。这种设计模式使得应用程序的配置和业务逻辑分离,从而提高了代码的可测试...

    Spring-IOC笔记

    spring-IOC的一些笔记心得

    spring-framework-1.0-with-dependencies.zip

    在Spring 1.0版本中,核心概念主要围绕IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)展开。IoC使得对象的创建和管理由Spring容器负责,而不是由代码直接创建,这样降低...

    spring-aop-5.1.0.RELEASE.jar

    spring-**cntext**-4.3.6.RELEASE.jar:spring提供了基础IOC功能上的扩展服务,提供了很多企业级服务的支持,如邮件服务,任务调度,JNDI定位,EJB集成,远程访问,缓存以及各种试图层框架的封装等。 spring-...

    Spring-4.0.3jar包

    Spring框架是Java开发中的核心组件,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。Spring-4.0.3是Spring框架的一个...

    Spring-IOC实现

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器处理,使得开发者可以更专注于业务逻辑的编写,而不是对象的生命周期管理。下面,我们将深入探讨Spring...

    spring-ioc学习

    spring-ioc学习 新手可以下过来学习下, spring-ioc简介

    Spring--IOC学习资料(pdf)

    根据给定的文件信息,以下是对Spring框架及其IOC特性详细的知识点总结: ### Spring框架概述 Spring是一个全方位的应用程序框架,旨在提供一个轻量级、非侵入式的开发环境,适用于构建各种类型的企业级应用。它由...

    spring 3.2.4.RELEASE jar包

    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-SpringIoC容器-SpringIoC的学习

    在Java Spring框架中,Spring IoC(Inversion of Control,控制反转)是核心特性之一,它使得应用程序的组件之间的依赖关系不再由代码直接管理,而是交由Spring IoC容器负责。这种设计模式降低了代码间的耦合,提高...

    spring-framework-5.1.2.RELEASE.rar

    其中,有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案例.zip

    在这个名为“spring-demo02-IOC-DI案例”的压缩包中,我们将深入探讨这两个核心概念以及如何在实际项目中应用它们。 首先,让我们来理解什么是IOC,即控制反转。在传统的编程模式中,对象通常自行创建或管理其依赖...

Global site tag (gtag.js) - Google Analytics