`
huanglz19871030
  • 浏览: 248771 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring学习总结

阅读更多

先说说简单地使用Struts2做Web时的经历:

1.经常需要在Action里边去使用JDBC去连接数据库,也就是说每个请求就连接一次数据库。而且业务逻辑与数据库控制代码都搞在一起,代码混乱,更不用说什么脱藕之类的东西。

2.之听说有数据源这个东西,先是使用了tomcat的数据源。我是在Action类的构造器里边去写了得到datasource对象的代码。这样得到connection就方便多了,不过代码依然很混乱。而且一些数据共享与交叉业务的东西多了,代码混乱得实在不行。像数据库CRUB操作都没有很好的封装。

3.我看了Hibernate才发现有DAO这个东西,不过我还没有使用Hibernate,我使用了JDBC去写了一个DAO,突然我的代码结构好好多,CRUB + Speical逻辑都放在DAO对象里边,每个DAO对象都有一个DataSource成员。猛地发现DAO有很多共性的地方,于是写了个CommonDAO,这里放了dataSource,其中还有从tomcat得到dataSource的逻辑。


4.在我的所有DAO成形后,发现CommonDAO帮了我大忙。不过我基本使用的是自动提交事务。之后我的一项测试发现(见贴:http://feixing2008.iteye.com/blogs/571478)手动提交事务是可以提向效率的。就在DAO里边加入了好多事务相关的代码。其实事务相关的代码基本都是相同的,不过都没有什么好的方法去摆在一个地方去统一管理事务。

5.虽然很多数据库操作逻辑都放去了DAO,从JE上看到了Properties文件,然页我程序就开始出现配置文件了。不过配置很简单,只需要一个jdni名称。

6.由于请求很多时候需要数据共享的,一开始时我都是放在session里边,之后发现内存大得要命,有时每次n请求的时候需要new一个DAO,这样不好,改进办法是写了一个单例,是一个Hashtable。需要共享的对象我都放在里边了。在请求来时,再通过名字去找,也就是一个单例管理器。不过我发现,有些对象是打算一启动建好的,而这样做只是在第一个请求时去做,像一些DAO对象,是在启动后第一次请求。一直没有很好的办法在程序一启动时就会创好对象。

总结一下以上问题:
A.没有将业务逻辑代码与数据库控制代码分开。
B.只能通过JNDI拿数据源。数据源配置放在Tomcat里了。
C.事务管理代码重复。
D.每个请求都需要实例化一些资源对象,效率不高。
E.管理资源对象逻辑时间不确定,到处都是资源管理代码。
F.代码之间依赖性很强,项目代码基本不可能再复用。

之后加入新组,使用的是SSH框架所做的项目,发现Spring原来是这样子用的:
1.项目分成三层:Action,Service,DAO结构非常清晰。

2.Action里都是页面控制逻辑,也就是控制显示哪个项目。数据怎么来?
只需要写一个xxxService成员,加上@Resource注解,Spring会帮你按成员名称去注入这个对象。
形象一点说,也就是给你你想要的东西。你想要什么,写好成员加个注解,没有就报错,有就给你。

3.然后到Service层也是,如果你要某某DAO对象,很简单,写个成员,加个注解,你就有啦。DAO层同理。
所以都基本不用你去new这个东西,只需要Spring去帮你new。

4.原来Spring就是一个很大的桶,也是相当于我之前的那个Hashtable的方式去管理单例。不过Spring比我强大得多,不需要主动去拿,只说“我要”。

5.为什么Spring知道你这个类需要某某对象呢?其实很简单,因为是他将你生出来的,也就是说,它不仅仅是一个单例管理器,而且是一个工厂。所有东西都是他生出来的。而是什么叫他生的?就是通过AppliactionContent.xml之类的配置文件。我用的是2.5,可以使用注解,Spring会通过配置去搜索包里的类,如果有“我受你管理”之类的注解,就会实例,放在自己这个桶里。

6.Spring顺便在实例时,看看你需要什么东西,也就是看你成员有什么注解,你要什么我就给你什么。

7.Spring在什么时候去实例这些对象呢?如果你在普通的程序是,那当然是new XMLBeanFactory这个时候运启动Spring容器,当然不一定马上去new,启动懒加载时,要在你去拿的时候才new.
而在Web之中是在实例监听器时启动Spring的,其实在Web容器中是以监听器的身份出现。然而解决了多之前所说的管理资源对象的问题。

8.一方面拿资源对象时方便了,但是造资源对象这个问题怎样了,有了Spring轻松多了,只需要配置一个,像我喜欢用jdbc的,只需要在Spring里配一个数据源,这个数据源选择可以有很多,apache的dbcp,C3P0,XAPool 等等,都可以在Spring里边配,换了也无须改代码。

9.光光使用jdbc也不是很方便,我可以使用jdbcTemplate,这个是Spring额外给的一个工具,很不错,不用自己去关connection。还可以直接然数据装成List对象。

10.AOP事务管理,实际上就是让Spring所管理的某些类的对象的某些方法调用前与调用后,加插一些方法,如在所有以Service结尾的类中所有add开头的方法调用后就提交事务。也并没有书上说得那么复杂。

Spring用处总结:
A.Spring生你出来,具体怎么生成,通过配置去告诉Spring,之后生成的样子,在程序中感觉一样.
B.如果你是受Spring管理的,那样你可以说要主义,只需要说:“我要XX对象”,不需要写代码去拿。
C.如果你是受Spring管理的,你在做某些事情前后,会跟着,像保姆一样,怕你没有手尾。
D.额外给你一些工具类,让你受益非浅。

 

SPRING当初是以简洁为开发思想的,代替繁杂的EJB过程,于降低开发难度,但是有许多地方被抛弃,不过对于大部分项目来说,影响不大。以IOC为指导的SPRING的真正经验就是:

IOC的真正作用在于可以让零散部分组成一个整体,而这些整体并不在意之间彼此的细节,从而达到了真正的物理上的疏散耦合,而非逻辑,有了IOC之后,我们可以让SPRING充当各框架中的整合器,把技术框架进行完美的结合。

分享到:
评论

相关推荐

    spring 学习总结

    Spring 学习总结 Spring 是一个广泛应用于企业级 Java 应用程序的开源框架,提供了一个灵活的、可扩展的、可维护的架构。Spring 框架主要分为七个模块:Core Container、AOP、ORM、Web、Web Services、JMS 和 Test...

    关于Spring学习总结

    为了深入学习Spring,你可以参考官方文档、在线教程、书籍,如《Spring in Action》等,以及参与开源社区,如Stack Overflow、GitHub等,积累实战经验。 总的来说,Spring框架是Java开发的强大工具,理解和掌握其...

    Spring学习总结(不含整合其他框架)

    ### Spring学习总结(不含整合其他框架) #### 一、Spring框架简介 **Spring** 是一个开源框架,旨在简化企业级应用开发。通过使用Spring,即使是简单的JavaBean也可以实现原本只有EJB才能完成的功能。Spring的...

    Spring学习笔记总结

    Spring学习笔记总结 Spring是一个基于Java的框架,它提供了一种简洁、灵活的方式来构建企业级应用程序。在这个笔记中,我们将总结Spring的主要概念和技术,包括IOC、AOP、MVC、Struts2和Hibernate的集成。 IOC...

    Spring学习总结笔记

    以上就是Spring学习笔记的初步概述,涵盖了Spring的基本架构、配置文件的创建和加载,以及依赖注入的主要方式。随着学习的深入,还可以涉及AOP、Spring MVC、Spring Boot、Spring Data等更高级的主题,从而更好地...

    Spring学习总结!

    《Spring学习深度剖析》 Spring框架作为Java领域最广泛应用的轻量级框架,以其强大的功能、灵活的设计和广泛的社区支持,成为了开发企业级应用的重要工具。这篇总结将深入探讨Spring的核心概念、主要特性以及实际...

    struts2、hibernate、spring学习总结文档

    Struts2、Hibernate和Spring是Java开发中三个重要的框架,它们分别用于构建MVC应用程序、对象持久化管理和依赖注入及面向切面编程。...通过这些知识点的学习,开发者可以更好地理解和应用Java Web开发中的高级技术。

    Spring学习之牛人总结

    通过"Spring学习总结"这份资料,读者可以期待对以上知识点有更深入的理解,同时可能会涵盖实战案例、最佳实践和常见问题解决方案,帮助开发者提升技能,提高开发效率。在学习过程中,结合实际项目练习,理解并熟练...

    spring2.0学习笔记+spring定时任务

    在"spring学习总结.doc"这个文档中,可能包含了Spring框架的基本概念,如Bean的声明和管理,以及如何通过XML配置或注解方式实现依赖注入。此外,还可能涵盖了Spring MVC,它是Spring用于构建Web应用的部分,允许...

    Spring Security学习总结一

    ### Spring Security 学习总结与应用实践 #### 引言 在深入了解Spring Security之前,我们需要认识到,传统的权限验证逻辑往往杂糅于业务逻辑之中,这种混合不仅使得代码难以维护,而且降低了系统的整体效率。每当...

    Spring学习笔记 自我总结

    spring学习笔记

    Spring Security 学习总结1_3

    除此之外,官方文档、GitHub仓库、Stack Overflow和各种在线课程都是深入学习Spring Security的好资源。 总的来说,Spring Security是一个功能强大且灵活的安全框架,它的核心机制包括用户认证、权限授权,以及丰富...

    Spring学习技术总结

    课程学习时候的笔记总结,这里面没有代码部分,全是知识点的总结,方便大家去面试回答

    Spring2学习总结

    Spring2的学习主要涉及以下几个关键概念和技术: 1. **IOC (Inversion of Control) 控制反转**: 控制反转是指应用程序不再直接创建和管理依赖对象,而是将这种责任交给一个外部容器,也就是Spring框架。通过这种...

    【狂神说】spring PDF学习总结笔记 Spring5.pdf

    【狂神说】Spring PDF学习总结笔记主要涵盖了Spring框架的核心概念、优点、组成部分以及相关扩展。Spring是一个由Rod Johnson创建的开源框架,旨在简化企业级应用开发的复杂性,它结合了众多现有技术,如SSH(Struct...

    Spring MVC 学习记录总结1

    在这个学习记录总结中,我们将深入理解Spring MVC的核心概念、主要组件以及其工作流程。 1. Spring MVC 概述 Spring MVC 是Spring框架的一部分,它基于Spring IoC(Inversion of Control,控制反转)容器,简化了...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。

Global site tag (gtag.js) - Google Analytics