Spring基础-1-IOC与DI

来源:互联网 发布:windows 集群文件系统 编辑:程序博客网 时间:2024/05/16 11:46

认识Spring

1,Spring简介

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

2,Spring优势

  • 方便解耦,简化开发
    Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
  • AOP编程的支持
    Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
  • 声明式事务的支持
    只需要通过配置就可以完成对事务的管理,而无需手动编程
  • 方便程序的测试
    Spring对Junit4支持,可以通过注解方便的测试Spring程序
  • 方便集成各种优秀框架
    Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
  • 降低JavaEE API的使用难度
    Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

IOC

1,IOC基本知识

Inversion of Control 控制反转.,指的是对象的创建权反转(交给)给Spring,作用是实现了程序的解耦合。
这里写图片描述

这里写图片描述
个人粗鄙的理解,就是我们如果需要使用对象资源的时候,直接从工厂中去获取,我们也不需要考虑工厂如何创建,只需要通过配置文件来控制工厂。

2,IOC容器相关知识

2.1,ApplicationContext:

这里写图片描述

  • ClassPathXmlApplicationContext:加载类路径下Spring的配置文件。
  • FileSystemXmlApplicationContext:加载本地磁盘下Spring的配置文件。

ApplicationContext已经替代了早期的 BeanFactory,BeanFactory在getBean的时候会生成实例,而ApplicationContext则是在加载applicationContext.xml时候就会创建。同时还提供其他功能。

  • 事件传递
  • Bean自动装配
  • 各种不同应用层的Context实现

2.2,bean标签相关属性

  • id属性:Bean起个名字。在约束中采用ID的约束,唯一。必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号。但是id不能出现特殊字符。也可以使用name属性,一般不推荐。
  • class属性:Bean对象的全路径
  • scope属性:scope属性代表Bean的作用范围
    • singleton:单例(默认值)
    • prototype:多例,在Spring框架整合Struts2框架的时候,Action类也需要交给Spring做管理,配置把Action类配置成多例!
    • request:应用在Web项目中,每次HTTP请求都会创建一个新的Bean
    • session:应用在Web项目中,同一个HTTP Session 共享一个Bean
    • globalsession:应用在Web项目中,多服务器间的session
  • Bean对象的创建和销毁的两个属性配置:Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法
    • init-method:当bean被载入到容器的时候调用init-method属性指定的方法
    • destroy-method:当bean从容器中删除的时候调用destroy-method属性指定的方法

DI

1,DI基本知识

Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中。

1.1,属性注入方式

1.1.1, 构造方法的方式注入属性:提供构造方法
<bean id="car" class="cn.itcast.spring.demo4.Car">        <constructor-arg name="name" value="保时捷"/>        <constructor-arg name="price" value="1000000"/></bean>
1.1.2,set方法的方式注入属性:提供set方法
<bean id="car2" class="cn.itcast.spring.demo4.Car2">        <property name="name" value="奇瑞QQ"/>        <property name="price" value="40000"/></bean>

1.2,对象注入方式

<property name="name" rel="具体的Bean的ID或者name的值"/>

1.3,数组,集合(List,Set,Map),Properties等的注入方式

1.3.1,如果是数组或者List集合,注入配置文件的方式是一样的
<property name="arrs">    <list>        <value>美美</value>        <value>小风</value>    </list></property>
1.3.2,如果是Set集合,注入的配置文件方式如下
<property name="sets">            <set>                <value>哈哈</value>                <value>呵呵</value>            </set></property>
1.3.3,如果是Map集合,注入的配置方式如下
<property name="map">    <map>        <entry key="老王2" value="38"/>        <entry key="凤姐" value="38"/>        <entry key="如花" value="29"/>    </map></property>
1.3.4,如果是properties属性文件的方式,注入的配置如下
<property name="pro">    <props>        <prop key="uname">root</prop>        <prop key="pass">123</prop>    </props></property>
原创粉丝点击