`
wjjbfq
  • 浏览: 82146 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring 总结

阅读更多

**为何要使用spring

 

至少在我看来,在项目中引入spring立即可以带来如下好处:

降低了组件之间的耦合度,实现软件各层之间的接耦。

可以使用容器提供的众多服务,如:事务管理服务、消息服务等。

容器提供单例模式支持,开发人员不再需要自己编写实现代码。

容器提供了AOP技术,利用它很容易实现如:权限拦截、运行期监控等功能。

容器提供了众多的辅助类,使用这些类能够加快应用的开发:如:JdbcTemplateHibernateTemplate

* Spring对于主流的应用框架提供了集成支持,如:集成hibernate JPA Struts等。

 

1、必须的jar

dist\spring.jar

lib\jakarta-commons\commons-logging.jar

如果使用了切面编程(AOP),还需要下列jar文件

lib/aspectj/aspectjweaver.jaraspectjrt.jar

lib/cglib/cglib-nodep-2.1_3.jar

如果使用了JSR-250中的注解,@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件

lib\j2ee\common-annotations.jar

:JSR(Java 规范请求)是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR(Java 规范请求),以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准

 

2Spring的配置文件模板

<?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-2.5.xsd">

.....

</beans>

 

3、实例化Spring容器

方法一:

ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});

方法二、

ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\\beans.xml“});

 

4、三种实例化bean的方式

 

******** 使用类构造器实例化

<bean id="personService" class="cn.wangjie.bean.impl.PersonServiceImpl"/>

 

******** 使用静态工厂方法实例化

<bean id="personService" class="cn.wangjie.factory.PersonServiceFacotry" factory-

 

method="createPersonService"/>

public class PersonServiceFactory{

public static PersonService createPersonService(){

return new PersonServiceImpl();

}

}

 

********使用实例化工厂方法实例化:

<bean id="personServiceFactory" class="com.wangjie.factory.PersonServiceFactory"/>

<bean id="personService" factory-bean="personServicefactory" factory-method="createPersonService"/>

public class PersonServiceFactory{

public PersonService createPersonService(){

return new PersonServiceImpl();

}

}

 

5bean的作用域 <bean id="" class="" scope="singleton/prototype"/>

****.singleton(默认)

在每个Spring IoC容器中一个bean定义只有一个对象实例(共享)

 

默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:

 <bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>

如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:

<beans default-lazy-init="true“ ...>

 

****.prototype

允许bean可以被多次实例化(使用一次就创建一个实例

 

指定Bean的初始化方法和销毁方法(下面初始化时调用类中的setup方法,销毁是调用teardown方法)

<bean id=“foo” class=“...Foo”

            init-method=“setup”

            destory-method=“teardown”/>

 

6IOC inversion of control 控制反转

所谓的控制反转就是应用本身不负责依赖对象的创建和维护,依赖对象的创建和维护是由外部容器(Spring容器xxx.xml)负责的,这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转,目的是为了获得更好的扩展性和良好的可维护性。

<bean id=" " class=" "/>

 

7 DI dependency injection 依赖注入

所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。

 

****使用构造器注入

****使用属性setter方法注入

****使用Field注入(用于注解方式)

注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,

 

手工装配依赖对象,在这种方式中又有两种编程方式

   *  xml配置文件中,通过在bean节点下配置

   *  java代码中使用@Autowired@Resource注解方式进行装配

 

通过setter方法注入依赖

 *   简单bean配置

     配置bean的简单属性,基本数据类型和String

<bean id="personService"   class="com.itcast.bean.impl.PersonServiceImpl">

               <!-- 基本类型,string类型 -->

              <property name="age" value="20"></property>

              <property name="name" value="张无忌"></property>                        

       </bean>

引用其它bean

      <bean id="person" class="com.itcast.bean.Person" />

      <bean id="personService"  

                                 class="com.itcast.bean.impl.PersonServiceImpl">

               <!-- 引用类型 -->

               <property name="person" ref="person" />

        </bean>

内部bean

    <bean id="personService" class="com.itcast.bean.impl.PersonServiceImpl">

          <!-- 内部bean注入 -->

         <property name="personClass">

             <bean class="com.itcast.bean.PersonClass" />

         </propert>

     </bean>

这种方式的缺点是你无法在其它地方重用这个personClass实例,原因是它是专门为personService而用。

装配集合

  若bean的属性是集合类型,按如下处理:

  A、装配List和数组:list中可以由重复值

<!-- 装配list -->

<property name="lists">

            <list>

                <value>list1</value>

                <value>list2</value>

                <ref bean="person"/>

             </list>

</property>

<!-- 装配数组 -->

         <property name="obj">

           <list>

                <value>obj1</value>

                <value>obj2</value>

                <ref bean="person"/>

           </list>

         </property>

 

装配集合

 B、 装配set set中不可以有重复值。

<!-- 装配set -->

         <property name="sets">

           <set>

                <value>set1</value>

                <value>set2</value>

                <ref bean="person"/>

           </set>

         </property>

set使用方法和list一样,不同的是对象被装配到set中,而list是装配到List或数组中装配

装配集合

 C、 装配map

<!-- 装配map-->

<property name="maps">

             <map>

                  <entry key="01">

                          <value>map01</value>

                  </entry>

                  <entry key="02">

                          <value>map02</value>

                  </entry>

             </map>

</property>

map中的<entry>的数值和<list>以及<set>的一样,可以使任何有效的属性元

素,需要注意的是key值必须是String的。

装配集合

 

D、装配Properties

<!--装配Properties  -->

        <property name="props">

           <props>

             <prop key="01">prop1</prop>

             <prop key="02">prop2</prop>

           </props>

        </property>

*装配集合

 

E、设置null

<!-- 装配null -->

         <property name="listnull">

           <null/>

         </property>

 

 

通过构造函数注入依赖

通过参数的顺序:

<constructor-arg index="0">

          <value>张三</value>

</constructor-arg>

<constructor-arg index="1">

        <value>56</value>

  </constructor-arg>

 

通过参数的类型:

<!-- 通过参数的类型 -->

      <constructor-arg type="java.lang.Integer">

              <value>56</value>

       </constructor-arg>

       <constructor-arg type="java.lang.String">

              <value>张三</value>

       </constructor-arg>

分享到:
评论

相关推荐

    Spring总结和复习

    Spring总结

    Spring总结.xmind

    包含Spring简介,AOP,SpringMVC,集成JDBC,事务,ORM框架,Spring集成知识点总结,以思维导图的形式展示,xmind文件。

    spring总结

    标题中的“spring总结”指的是对Spring框架的全面回顾和总结,Spring是Java开发中最广泛应用的轻量级框架,尤其在企业级应用开发中占据主导地位。这篇总结可能涵盖了Spring的核心特性、工作原理以及最佳实践。 描述...

    Spring总结(四)

    Spring个人总结,基于Annotation注解的方式开发,配置

    spring总结1可以查看

    spring总结1可以查看

    Spring总结

    三大框架里的spring总结,希望对各位有用。

    spring 总结md文档

    spring入门笔记

    【狂神说】spring 总结源码 下载

    在这个“狂神说”系列的Spring源码总结中,我们可以深入理解Spring的核心概念和实现机制。 1. **依赖注入(DI)与控制反转(IoC)**:Spring的核心特性是依赖注入,它通过反转应用程序对对象的控制权,使得对象的创建和...

    达内培训内部资料--spring总结精华版

    【总结】 Spring 框架是一个全方位的解决方案,它不仅提供了一种管理对象生命周期和依赖关系的有效方式,还简化了事务处理、持久层操作和Web应用的开发。通过使用Spring,开发者可以构建出更加模块化、易于测试和...

    Spring总结——田超凡.docx

    【Spring 框架概述】 Spring 是一个广泛应用于企业级 Java 开发的开源框架,由 Rod Johnson 创建,旨在简化 Java EE 应用的复杂性。它以轻量级、低侵入式的设计理念,提供了全面的解决方案,涵盖从表现层到业务逻辑...

    spring总结.xmind 思维导图

    Spring5思维导图

    Spring总结——Spring容器、Spring中的IoC

    文章目录Spring总结Spring容器控制反转(IoC)基于XML的IoC Spring总结 Spring容器 什么是Spring容器 从概念上讲:Spring 容器是 Spring框架的核心,是用来管理对象的。容器将创建对象,把它们连接在一起,配置它们...

    ssm之spring总结和整理 java框架

    spring方面介绍 常用注解 生命周期 AOP DI

    spring总结笔记

    ### Spring框架概述与基本配置 #### 一、Spring框架简介 Spring框架是一个开源的企业级Java应用框架,由Rod Johnson创建并由Pivotal Software提供支持。Spring提供了全面的基础架构支持,使得开发者能够专注于应用...

    Spring思维导图

    Spring框架是Java开发中最广泛应用的轻量级框架之一,它以其IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心特性,极大地简化了企业级应用的开发。这份"Spring思维...

Global site tag (gtag.js) - Google Analytics