`
小强HelloWorld
  • 浏览: 5248 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Spring学习-------IOC

 
阅读更多

IOC是Spring中的核心部分,叫做控制反转活DI(依赖注入),看了很多大牛写的源码分析,表示看不懂,先简单的写一写应用,后面如果有看《Spring in action》,在来写些IOC的源码分析吧啊,未来的自己我看好你。

好,言归正传,下面来写些IOC的简单应用。

IOC一般可以通过2种方式来依赖注入,你需要的对象:一种是通过构造方法,二是通过Set方法,常用的是通过Set方法来实现。


下面来看:1,通过构造方法实现

举个简单的例子,我们有个Dao接口,分别有Mysql和Oracl的实现里面有addUser()方法,UserMangerImpl实现了UserManger接口,对DAO 接口依赖。

我们使用Spring的Ioc注入DAO的具体实现到UserMangerImpl中,看下配置文件:

<beans xmlns="http://www.springframework.org/schema/beans"
	     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	     xmlns:aop="http://www.springframework.org/schema/aop"
	     xmlns:tx="http://www.springframework.org/schema/tx"
	     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

     <bean id="Dao4MysqlImpl" class="com.lee.spring.dao.Dao4MysqlImpl"/>
     <bean id="Dao4OracleImpl" class="com.lee.spring.dao.Dao4OracleImpl"/>
     <bean id="UserMangerImpl" class="com.lee.spring.userManger.UserMangerImpl">
        <constructor-arg ref="Dao4MysqlImpl"/>
     </bean>
</beans>

使用标签bean来配置类,在UserMangerImpl中依赖注入Dao4MysqlImpl,<constructot-arg/>来表示使用构造函数来注入的。


2,使用Set方法来实现依赖注入

还是来看下配置文件

<beans xmlns="http://www.springframework.org/schema/beans"
	     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	     xmlns:aop="http://www.springframework.org/schema/aop"
	     xmlns:tx="http://www.springframework.org/schema/tx"
	     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-lazy-init="true">

     <bean id="Dao4MysqlImpl" class="com.lee.spring.dao.Dao4MysqlImpl"/>
     <bean id="Dao4OracleImpl" class="com.lee.spring.dao.Dao4OracleImpl"/>
     <bean id="UserMangerImpl" class="com.lee.spring.userManger.UserMangerImpl" autowire="byName">
          <property name="dao" ref="Dao4OracleImpl"></property>
     </bean>
</beans>
中间有2个参数要注意下,一个是
default-lazy-init="true"
表示延迟加载

autowire="byName"
表示根据名字来自动转载


好下面在来个例子看下,怎么依赖注入普通属性:


我们看下这些普通属性怎么注入,看下配置文件:

<beans xmlns="http://www.springframework.org/schema/beans"
	     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	     xmlns:aop="http://www.springframework.org/schema/aop"
	     xmlns:tx="http://www.springframework.org/schema/tx"
	     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"  default-autowire="byName">
          <bean id="Bean1" class="com.lee.spring.Bean1">
              <property name="strValue" value="Hello Spring"/>
              <property name="intValue" value="123"/>
              <!-- 
              <property name="listValue">
                  <list>
                    <value>listValue1</value>
                    <value>listValue2</value>
                  </list>
              </property>
               -->
              <property name="setValue">
                  <set>
                     <value>setValue1</value>
                     <value>setValue2</value>
                  </set>
              </property>
              <property name="mapValue">
                   <map>
                             <entry key="k1" value="v1"/>
                             <entry key="k1" value="v1"/>
                   </map>
              </property>
              <property name="stringValue">
                  <list>
                      <value>stringValue1</value>
                      <value>stringValue2</value>
                  </list>
              </property>
          </bean>
</beans>
好吧,今天就总结道这,有空再来。


分享到:
评论

相关推荐

    Spring-ioc-jar

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

    maven-spring-ioc

    **Spring IoC 框架详解** Spring框架是Java开发中的一个核心组件,它提供了许多功能,其中最重要的一项就是...通过不断的实践和学习,你将能够充分利用Spring框架的强大功能,构建出更加灵活、可扩展的应用系统。

    Spring--IOC

    **Spring--IOC** Spring框架是Java企业级应用开发中的核心组件,它的全称是Spring Inversion of ...了解和掌握这些知识点,对于初级入门的开发者来说至关重要,能够为后续深入学习和使用Spring框架打下坚实的基础。

    Java-Spring-SpringIoC容器-SpringIoC的学习

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

    spring-ioc学习

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

    SpringDemo-master.zip

    总结起来,"SpringDemo-master.zip"是一个展示了Spring与MyBatis集成的实例,通过这个项目,开发者可以学习如何在Spring环境中配置和使用MyBatis,理解两者之间的协作机制,以及如何通过注解和XML配置文件实现数据...

    spring-framework-5.0.0.RELEASE-dist.zip

    开发者可以通过阅读这些文档快速上手,并深入学习Spring的高级特性,如依赖注入、AOP(面向切面编程)、数据访问、Web应用、测试等。 2. **libs文件夹**: 这个文件夹包含了Spring框架所需的jar包,这些jar包涵盖...

    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-master

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

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

    这些文档包括用户指南、参考手册、API文档以及开发者指南,是学习和使用Spring框架的重要参考资料。开发者可以通过阅读这些文档深入理解Spring框架的工作原理,以及如何有效地使用其各种特性。 **spring-5.3.1-...

    Spring--IOC学习资料(pdf)

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

    spring-demo02-IOC-DI案例.zip

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

    spring-framework-1.0-with-dependencies.zip

    虽然随着版本的更新,Spring框架的功能和架构有了很大的发展,但1.0版本的基本理念和设计模式至今仍然具有重要的学习价值。 通过深入研究这个压缩包,开发者不仅可以了解Spring Framework的基础原理,还可以对比...

    官方原版源码spring-framework-5.1.4.RELEASE.zip

    例如,关于IoC(Inversion of Control,控制反转)的实现,Spring使用了XML配置或注解来定义bean的依赖关系,通过反射机制动态加载和管理bean。另外,AOP模块实现了切面编程,允许我们定义横切关注点,如日志、事务...

    官方完整包 spring-framework-5.3.7.RELEASE-dist.zip

    - 配置Spring的IoC容器,可以使用XML配置或Java配置。 - 开发业务逻辑,利用Spring的依赖注入和AOP特性。 - 如果涉及Web开发,可以配置Spring MVC并创建控制器。 - 运行应用程序,并使用Spring提供的测试工具...

    spring-tool-suite-3.9.6.RELEASE-e4.9.0-win32.zip

    Spring Tool Suite(STS)将Eclipse的强大学习曲线和强大的开发工具与Spring的开发工具集结合在一起,提供了一流的Spring支持,包括智能代码补全、配置向导、项目模板、Spring Boot启动器、Spring Roo支持等。...

    官方原版源码spring-framework-5.2.3.RELEASE.zip

    深入学习Spring源码,不仅能够帮助我们理解其工作原理,还能提升我们在实际项目中的问题排查能力。例如,当我们遇到Spring的依赖注入问题时,可以通过查看`BeanFactory`和`ApplicationContext`的相关源码来定位问题...

    Spring IoC简单示例-注解配置-Maven构建

    在本例中,可能有一个名为`spring-ioc-anno`的包,其中包含着使用注解配置的Spring bean。 为了启动Spring容器并运行应用程序,我们可以创建一个主类,使用`ApplicationContext`来加载配置并获取bean。例如: ```...

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

    这些文档涵盖了从基本概念到高级特性的所有内容,是学习和使用Spring不可或缺的资源。 “spring-5.3.2-schema.zip”文件则包含了Spring配置文件的XML Schema定义,这些定义帮助开发者更好地理解和编写符合规范的...

    spring-framework-4.3.6.RELEASE-dist.zip

    - **src**:源代码,对于学习和理解Spring的内部工作原理非常有用。 - **docs**:文档,包括API参考、用户指南和开发者指南,帮助开发者更好地使用Spring框架。 - **dist**:预编译的库文件,如jar包,可以被引入到...

Global site tag (gtag.js) - Google Analytics