现在的位置: 首页 > 综合 > 正文

初识Spring

2013年05月19日 ⁄ 综合 ⁄ 共 1413字 ⁄ 字号 评论关闭

传统开发

    传统的java开发也可以实现跨平台、易移植等特性,但是传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现“一次编写,到处运行”,EJB同样是重量级,结构复杂、臃肿,开发难度大。终于在2003年产生了一个轻量级框架Spring。

Spring

    在学习它之前我们先来了解一下它是什么。

    Spring是一个Java的轻量级开源框架,它是为了解决企业应用开发的复杂性而创建的。它使用基本的JavaBean来完成以前只可能由EJB完成的事情。它致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

    简单来说,Spring的核心就是轻量级的控制反转和面向切面的容器框架。

Spring的优点

  • 轻量级。从大小与开销两方面而言Spring都是轻量的,并且Spring是非侵入式的:Spring应用中的对象不依赖于Spring的特定类。
  • 控制反转。Spring通过控制反转进而解耦合,它可以实现让容器在对象初始化时就主动将依赖传递给它,解决了了各种new和查找这种耦合的存在。
  • 面向切面。Spring提供了面向切面编程的丰富支持,通过分离应用的业务逻辑与系统级服务进行内聚性的开发。开发要做的仅仅是专注业务逻辑即可。
  • 容器性。Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,开发者可以为每个bean定制创建的时间、如何被创建、以及之间的相互关联。

    所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。

耦合问题

    引用耦合

UserDao userDao=new UserDaoMysqlImpl();

userDao.addUser(username, password);

    这样的代码经常出现在程序开发中,但是这种new的方式让两个类或对象更加耦合,如何解耦?

    业务与服务

	try {
		session=HibernateUtils.getSession();
		session.getTransaction().begin();
		
		IdCard idCard=new IdCard();
		idCard.setCardNo("111");
		
		Person person= new Person();
		person.setName("Monday");
		person.setIdCard(idCard);
		
		session.save(person);
		
		session.getTransaction().commit();
		

} 

    同样,这样的代码同样经常出现在编程中,很明显session=HibernateUtils.getSession();session.getTransaction().begin();及session.getTransaction().commit();都是对事务的管理,它们与具体的业务不应当是耦合在一起的,这样的问题如何解决?

    在此留个悬念,提前可以剧透的是Spring可以很合理的解决这些问题。

总结

    这篇博客先简单介绍一下Spring,从它因何产生、如何使用角度,先宏观地看,进而再进入细节中分析。

抱歉!评论已关闭.