`
jackmisweijie
  • 浏览: 72005 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

第三章 Spring的心脏

 
阅读更多
注:希望大家看后,请给我一点评价,无论写的怎么样,希望你们能给我支持。提出你宝贵的意见。我会继续完善。谢谢您。朋友。
第三章 Spring的心脏
     大家看了章节名可能会想到什么?其实本章我要讲述的是前两章节中都简单的介绍过的Spring的控制反转容器(Ioc)。在这里我为什么又要单独的用一章来讲它呢?Spring只所以能诞生,能一时在众多的框架中独树一帜。就是因为它的控制反转容器与别的框架的不同。
     以前java只所以能流行至今,说到底是java虚拟机的产生。才产生了java语言的跨平台性,也有了“一次编译,到处运行”的宣称。其实哪种语言能够生存的长短,大部分原因与它的编译机制以及能够在不同的平台运行机制密切相关的。大家可能也比较了解微软的.NET平台,在当今是与Sun公司的java平台相媲美的。它们两者各有各的优势。谁是最后的赢家,那要看它们的支持的跨平台性。其实在最终都是转换成机器码,都是一些0101的代码。就是在这转之前看谁可以避开平台的差异性。那就可能赢得更多的用户支持。我也是比较欣赏微软公司的,一家可以与世界上那么多的龙头公司相竞争。还有很多开源组织。还能风靡全球,它的。NET的平台依然在健壮的发展。市场也越来越大。这一点的确让我很佩服。
让我们言归正传吧。 我们详细的讲解一下配置文件中的元素。
一些从Bean开始
   先让大家看一下我以前在项目中的applicationContext.xml文件的大概配置和基本的结构。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 配置数据源-->
         <bean id="dataSource"
                   class="org.apache.commons.dbcp.BasicDataSource">
                   <property name="driverClassName">
                            <value>sun.jdbc.odbc.JdbcOdbcDriver</value>
                   </property>
                   <property name="url">
                            <value>jdbc:odbc:test</value>
                   </property>
                   <property name="username">
                            <value>sa</value>
                   </property>
                   <property name="password">
                            <value></value>
                   </property>
         </bean>
         <!-- 配置会话工厂(SessionFactory)相当于Hibernate中的配置文件 -->
         <bean id="sessionFactory"
                   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                   <property name="dataSource">
                            <ref bean="dataSource" />
                   </property>
                   <property name="hibernateProperties">
                            <props>
                                     <prop key="hibernate.dialect">
                                               org.hibernate.dialect.SQLServerDialect
                                     </prop>
                                     <prop key="show_sql">true</prop>
                            </props>
                   </property>
                   <property name="mappingDirectoryLocations">
                            <list>
                                     <value>classpath:/com/jack/fund/po/pofile/</value>
                            </list>
                   </property>
         </bean>
         <bean id="customerDAO"
                   class="com.jack.fund.dao.hibernateimpl.CustomerDAO">
                   <property name="sessionFactory">
                            <ref bean="sessionFactory" />
                   </property>
         </bean>
         <bean id="fundService"
                   class="com.jack.fund.service.serviceimpl.FundService">
                   <property name="customerdao">
                            <ref bean="customerDAO" />
                   </property>    
         </bean>
    。。。
</beans>
接下来我要以这个配置文件为例来讲解一下里面涉及的元素。
第一行<?xml version="1.0" encoding="UTF-8"?>大家应该很明白了吧。它是xml文件的头信息。
下面的就是文档类型定义了,简称(DTD).它规定了配置文件的语法以及结构的规范。以保证文档的有效性。接下来应该都一样了,在<beans>…</beans>之间都是一些<bean>…</bean>这里为什么用bean呢?是有它的原因的,大家可能都听过JavaBean的说法吧,还有EJB中有三个典型的bean,还与java名字的来源。总之,bean这一词在java中已在熟悉不过了,它表示一种可重用,易维护,可扩展的一个组件。说明了它的可重用性。这也就是为什么给它用<bean>的原因吧。
每一个bean就代表一个对象,大多数是指一个可实例化的类。可实例化就以为着不能是一些抽象的类和接口。每个bean中有好多属性,我只简单的说明几个常用的属性。
(1)       id
此属性是bean的唯一标识符。是区别于其它bean的。在BeanFactory中,也就是在Spring的控制反转容器中,可根据此属性取出相应的实例化bean。也可以根据name属性得到。
(2)       name
     此属性表示bean的名字,它并没有唯一性。在BeanFactory中同样可以根据name来取出相应的实例化的bean
(3)       class
     此属性表示bean的类的名字。必须是可以实例化的类名。
(4)       ref
表示对bean的引用,它有两种形式,<rel  local=””>表示在同一个配置文件范围内的引用。而<rel  bean=””>的范围更大,可以在同一个目录下找到相关配置文件的对应项。一般用<rel  bean=””>注意: (bean既可以指nameidlocalid)
(5)       value
表示的就是某个属性的值了。
(6)       singleton
此属性表明该bean在每次被调用时,是否以单例模式返回。默认是true.表示每次返回的都是同一个实例化的bean。反之,每次返回不同实例化bean
(7)       lazy-init
一般的bean都会在容器启动时把所有的bean都实例化,这样虽然不会遗漏一些bean,但它也有一个明显的弊端,那就是浪费资源。把一些没有用的bean也实例化,这样会占用很多空间的。一般我们不这样做的。这时我们就需要用到这个属性了,它的作用就是延时加载载,初始化并实例化。也就是等到用的那一刻才被实例化。这时我们只需把它的属性值设为true就可以了。它就不会在第一次加载的时候而被初始化。如果有其他的bean依赖它的化,延时加载也会提前加载的。  
(8)       dependency-check
该属性主要是用来依赖检查。
(9)       autowire
这个属性主要用来设置自动装配。我们一般是使用<ref  bean=””>(显式装配)来找到。可根据byName,byType,constructor,autodetect默认是no,即不采用自动装配。一般不要使用此属性,这样容易造成混淆。
(10)   depends-on
此属性表示依赖关系,就是该bean在实例化的时候是否有什么其他的依赖项,有什么前置条件。这个属性一般很少用它,因为它会破坏程序的结构。
(11)   init-method
该属性表示在实例化该bean之前,是否有初始化的值,如有一般都放在该属性的方法中执行。
(12)   destroy-method
该属性与上面的相反,就是在该bean被实例化之后的销毁方法。一般用于释放资源。该属性也很少用,因为大部分的销毁工作有容器的自动检测机制执行,它会定时检测该实例化的bean是否还用,它会自动销毁那些不用的bean,以释放资源空间,类似于java.net中的垃圾回收器。
     上面介绍的都是bean标签的内部属性。还有一些标签也是常用的.<property></property>是用的最多的,一般嵌套在bean中使用。他表示一个属性,它又有几个常用的属性,name,value.它一般有两种形式的表达:
<property name=””><value></value> </property><property name=”” value=”” />
 以下部分请关注我的博客.
分享到:
评论

相关推荐

    Spring in Action 第二版

    2. **Spring容器**:Spring容器(ApplicationContext)是Spring框架的心脏,负责创建、配置和管理Bean。读者将了解到如何创建和使用不同类型的Spring容器,以及如何在容器中定义Bean及其生命周期。 3. **AOP**:...

    基于大数据的心脏病患者数据分析系统代码 - java - springboot - spring - 代码 - 网站 - 代码

    第3章 系统分析 5 3.1 可行性分析 5 3.1.1技术可行性 5 3.1.2经济可行性 5 3.1.3运行可行性 6 3.2 系统流程 6 3.2.1 操作信息流程 6 3.2.2 登录信息流程 6 3.2.3 删除信息流程 7 3.3 性能需求 7 第4章 系统设计 8 ...

    Spring in Action-2nd Edition 英文版

    《Spring in Action》第二版是Manning出版社推出的Action系列书籍之一,主要针对Spring框架进行深入浅出的讲解。Spring框架是Java开发中的核心组件,它为构建企业级应用提供了全面的解决方案,包括依赖注入、AOP...

    [SpringCloud Alibaba]小白快速入门Spring Cloud Alibaba

    第三章 nacos官网介绍及单机部署 第四章 nacos集群部署 第五章 nacos控制台介绍 第六章 注册中心nacos(服务注册与发现) 第七章 Http客户端及负载均衡之springcloud openfeign 第八章 nacos配置中心 第九章 课程...

    心脏病患者数据分析系统-心脏病患者数据分析管理系统java代码-基于springboot的心脏病患者数据分析系统-毕设项目代码

    心脏病患者数据分析-心脏病患者数据分析系统-心脏病患者数据分析系统源码-心脏病患者数据分析管理系统-心脏病患者数据分析管理系统java代码-心脏病患者数据分析系统设计与实现-...第2章 相关技术介绍 3 2.1 MySQL数据库

    Spring 30道面试题和答案.docx

    使用Spring的方式有多种,例如构建完整的Web应用,集成到第三方Web框架中作为中间层,或者用于远程服务。Spring的IOC容器是整个框架的心脏,负责创建、管理和装配Bean。它通过读取配置元数据(XML、注解或Java代码)...

    第2章 容器和bean的基本原理1

    IoC容器是Spring框架的心脏,它负责初始化、配置和管理bean。在Spring中,bean是被容器管理的Java对象,它们的定义和命名是IoC容器管理的基础。容器根据bean定义(通常在XML配置文件中)创建bean实例,并负责bean的...

    本科毕业设计_基于SpringBoot的医疗数据分析管理系统_前后端分离项目.zip

    它的优势在于能够轻松集成其他Spring模块和第三方库,如Spring Data JPA用于数据库操作,Spring Security用于权限管理等。 项目中的数据文件包括了多种格式,比如CSV(逗号分隔值)文件和PDF文档。CSV文件如...

    javaweb网络购物中心项目源码.zip

    8. **支付接口**:为了完成实际的交易,项目可能集成了第三方支付接口,如支付宝或微信支付,这涉及API调用和回调处理。 9. **缓存技术**:为了提高性能,项目可能使用了缓存机制,如Redis,来存储频繁访问的数据。...

    阿波罗分布式配置说明书

    * 提供开放平台API,支持第三方应用集成 Apollo的应用场景 Apollo的应用场景主要包括: * 微服务配置管理 * 分布式系统配置管理 * 云计算资源配置管理 * 大数据分析平台配置管理 Apollo的优势 Apollo的优势...

    电子购物系统

    服务器端使用框架(如Spring Boot、Django、Laravel)来简化开发,同时配合API接口实现与第三方服务(如物流、支付平台)的集成。 总结来说,电子购物系统由用户模块、产品模块、订单模块和购物车模块构成,各模块...

    maven 中引入依赖的包

    除了Maven的默认仓库外,还可以通过`&lt;repository&gt;`标签添加自定义的远程仓库地址,这对于处理公司内部私有库或者第三方库的非中央仓库发布的情况非常关键。 在实际开发中,有时会遇到依赖冲突。Maven的依赖管理原则...

    Struts开发入门与项目实践

    第三个实例可能是实现一个动态生成的表格展示,这会介绍Struts如何与DAO(Data Access Object)层交互,以及如何动态地在JSP页面上使用JSTL标签库来展示数据。 第四个实例可能是一个购物车应用,其中你需要处理多个...

    鲜花配送系统鲜花配送系统

    支付处理模块与第三方支付平台集成,保证交易的安全和便捷。最后,客户关系管理模块帮助维护客户信息,提供个性化服务,促进客户满意度和忠诚度。 在技术选型方面,由于“标签”提到了Java,我们可以推断该系统是用...

    面试及常见问题总结(偏Java)

    第三范式(3NF)要求表无传递依赖;第四范式(4NF)要求消除多值依赖。 4. **IP地址计算与掩码**: IP地址和子网掩码一起用于确定网络部分和主机部分。掩码与IP地址进行逻辑与操作,以确定主机是否在同一网络段内...

    珠宝购物系统原版

    "精品资源篇"可能指的是系统中的高质量第三方库、框架和工具。例如,前端可能使用了React或Vue.js这样的现代JavaScript框架来构建用户界面,提供流畅的交互体验;后端可能采用了Spring Boot或Django等框架,以提高...

    12. 电商Ego-订单系统实现.zip

    7. **支付集成**:订单系统通常需要集成第三方支付平台,如支付宝、微信支付等。这涉及到API调用、回调处理、支付状态同步等复杂逻辑。 8. **库存管理**:系统需要实时更新库存信息,确保商品的准确售卖。库存锁定...

    shiro权限框架文档

    Subject代表了当前的“用户”,这个用户不一定是一个具体的人,也可能是一个第三方服务、守护进程账户、时间驱动的作业或者其它类似的东西。Subject是Shiro框架与应用安全相关的所有事务的基础,包括用户登录、登出...

Global site tag (gtag.js) - Google Analytics