`
jianchen
  • 浏览: 336228 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring学习之第一篇

阅读更多

Spring是一个开源的控制反转和面向切面的容器框架,它的主要目的是简化企业开发。

使用Spring的好处:
1,降低组件之间的耦合度,实现软件各层之间的解耦。

2,可以使用容器提供的 众多服务。如:事务管理服务,消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不需要处理复杂的事务传播。

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

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

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

6,Spring对应主流的应用框架提供了集成支持,如;集成Hibernate,JPA,Struts等,这样更便于应用的开发。

轻量级和重量级概念的划分:

划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务。使用的服务越多,容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者是运行性能。

对于Spring容器,它提供了很多服务,但这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明使用该服务,如果应用使用的服务很少,如:只使用了spring核心服务,那么我们可以认为此时应用属于轻量级的,如果应用使用了spring提供的大部分服务,这时应用就属于重量级。目前EJB容器就因为它默认为应用提供了EJB规范中所有的功能,所以它属于重量级。


实例化spring容器常用的两种方式:

方法一:
在类路径下寻找配置文件来实例化容器

ApplicationContext ctx = new ClassPathXmlApplicationContext("application.xml");

方法二:
在文件系统路径下寻找配置文件来实例化容器

ApplicationContext ctx = new FileSystemXmlApplicationContext("d:\\beans.xml");

模拟spring对bean的管理程序:

1,创建解析xml并生成bean对象的类。解析xml文件,使用dom4j解析xml文档,获取配置的bean信息,将id和className构造成一个beanInfo对象保存到list中去。

2,然后,通过该list中的beanInfo对象,以id为键,以className利用反射机制new出的bean对象作为值,保存到一个map中去。

3,在测试程序中,调用该解析类。在解析类中也有getBean方法,只是简单的从map中根据键取值而已。

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

三种实例化bean的方式:
1,使用类构造器实例化
<bean id="orderService" class="cn.itcast.OrderServiceBean"/>

2,使用静态工厂方法实例化
<bean id="personService" class="cn.itcast.service.OrderFactory" factory-method="createOrder"/>

public class OrderFactory{
        public static OrderServiceBean createOrder(){
                return new OrderServiceBean();
        }
}

3,使用实例化工厂方法实例化
<bean id="personServiceFactory" class="cn.itcast.service.OrderFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder"/>

public class OrderFactory{
        public OrderServiceBean createOrder(){
                return new OrderService();
        }
}


bean的作用域:
.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-inti="true",如下:

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

.prototype
每次从容器获取bean都是新的对象。

<bean id="orderService" class="cn.itcast.OrderServiceBean" scope="prototype" />

指定bean的初始化方法和销毁方法

<bean id="xxx" class="cn.itcast.OrderServiceBean" init-method="init" destroy-method="close"/>


注入依赖对象:
基本类型对象注入:
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
        <constructor-arg index="0" type="java.lang.String" value="xxx"/>构造器注入
        <property name="name" value="zhao"/>//属性setter方法注入
</bean>

注入其他bean:
方式一:
<bean id="orderDAO" class="cn.itcast.service.OrderDaoBean"/>
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
        <property name="orderDao" ref="orderDao"/>
</bean>

方式二(使用内部bean,但该bean不能被其他bean使用)
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
        <property name="orderDao">
                <bean class="cn.itcast.service.OrderDaoBean"/>
        </property>
</bean>

分享到:
评论
2 楼 jianchen 2009-03-24  
mshijie 写道

可以考虑在系列文章上加上上下链接

很好的建议。
1 楼 mshijie 2009-03-24  
可以考虑在系列文章上加上上下链接

相关推荐

    SpringCloud视频教程全套百度网盘

    第1章 SpringCloud简介 第2章 SpringCache缓存详细讲解及应用 第3章 Redis高级缓存讲解及应用 第4章 SpringSecurity安全详细讲解及应用 第5章 RabbitMQ高级消息的讲解及应用 第6章 ElasticSearch详细讲解及应用 第7...

    JAVA spring 系列案例50个和学习资料

    Spring系列第1篇:为何要学spring?Spring系列第2篇:控制反转(IoC)与依赖注入(DI)。Spring系列第3篇:Spring容器基本使用及原理。Spring系列第4篇:xml中bean定义详解(-)Spring系列第5篇:创建bean实例这些方式...

    尚硅谷SpringCloud第2季2020版.mmap

    一篇很好的springCloud学习的思维导读,详细的介绍了,springCloud的搭建步骤以及各组件的说明讲解 涵盖 Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign...

    《精通Spring2.X企业应用开发详解》随书源码1-15章

    ======================================================================== &lt;br&gt;第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...

    Spring全家桶课程 基础篇:Spring MVC快速开发 的源码

    内容概要:该资源是Spring全家桶视频课程的第二部分Spring MVC的源码,其对于Spring的最常用的基本功能,如:表单、国际化、过滤器、拦截器、log等都使用案例进行了说明,并且在最后通过一个贯穿前、中、后台的案例...

    Spring 深度学习 看这篇就够了(一)

    Spring 深度学习 看这篇就够了(一)第 1 章 spring概述1.1 spring概述1.1.1 spring 是什么1.1.2 spring 的优势1.1.3 spring 体系结构第 2 章 IOC 的概念和作用2.1 程序的耦合和解耦2.1.1 什么是程序的耦合2.1.2 ...

    SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架

    本资源是一篇关于学习和应用SSM框架(Spring、SpringMVC、MyBatis)的学习记录系列文章中的第六天内容,主题为初识Spring框架。 在这一部分中,你将了解到Spring框架的基本概念和使用方法,并通过实例探讨了Spring ...

    spring揭秘

    没有教程似的训导,更多的是说故事般的娓娓道来,本书是作者在多年的工作中积累的第一手Spring框架使用经验的总结,深入剖析了Spring框架各个模块的功能、出现的背景、设计理念和设计原理,揭开了Spring框架的神秘...

    spring揭秘 王福强 高清版

    没有教程似的训导,更多的是说故事般的娓娓道来,本书是作者在多年的工作中积累的第一手Spring框架使用经验的总结,深入剖析了Spring框架各个模块的功能、出现的背景、设计理念和设计原理,揭开了Spring框架的神秘...

    Spring MVC+MyBatis开发从入门到项目实战

    第1篇是Java开发环境的搭建,包括JDK的下载与安装、环境变量的配置、MyEclipse的下载与基本配置。第2篇是MyBatis技术入门,包括剖析JDBC的弊端、MyBatis的背景介绍、入门程序的编写、配置文件的剖析、高级映射及缓存...

    《精通Spring2.X企业应用开发详解》16-19章

    ======================================================================== &lt;br&gt;第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...

    《精通Spring2.X企业应用开发详解》20-23

    ======================================================================== &lt;br&gt;第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...

    Spring全家桶核心篇:SpringBoot快速入门 源码

    内容概要:该资源是Spring全家桶视频课程的第三部分Spring Boot的源码,其对于Spring Boot的最常用的第一个小程序、JavaConfig和常见注解、启动改变、热部署、Springboot整合Thymeleaf/freemarker/JSP、异常处理、...

    Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)

    第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...

    自定义Spring Security的身份验证失败处理方法

    在本篇文章里小编给大家整理了一篇关于自定义Spring Security的身份验证失败的处理方法,有需要的朋友们学习下。

    Spring Framework 概述.rar

    自从这篇文章的第一版在2003 年10 月发表以来,Spring 框架正在逐步普及。经历了 1.0 最终版到现在的1.2 版,而且被运用于很多行业和项目中。在这篇文章中,我会解释Spring 为什么会获得成功,并告诉你我十分...

    Java Web整合开发完全自学手册:Struts+Hibernate+Spring+Eclipse源码

    《JavaWeb整合开发完全自学...《JavaWeb整合开发完全自学手册》的重点第二篇Struts、第三篇Hibernate、第四篇Spring采用了相似的行文结构,条理清楚,不仅可作为stepbystep的入门书籍,也可作为读者自学的案头参考书。

    Spring Boot实战入门篇视频课程

    第一章:对spring boot的特性、优缺点、场景进行详细讲解。第二章:springboot核心功能第三章:热部署的几种模式第四章:Web开发的各种技术第五章:数据访问层:spring data jpa、jdbctemplate、mybatis、redis第六...

    springboot项目整合.zip

    第一篇:构建第一个SpringBoot工程] 第二篇:SpringBoot配置详解] 第三篇:SpringBoot日志配置] 第四篇:整合Thymeleaf模板] 第五篇:使用JdbcTemplate访问数据库] 第六篇:整合SpringDataJpa] 第七篇...

Global site tag (gtag.js) - Google Analytics