初识Spring开源框架

11 篇文章 0 订阅

目录

Spring框架的背景

Spring好处

Spring框架对象的实例

 在Java已有类中使用

创建自定义类

 

 


 

 

 


 

Spring框架的背景

Rod Johnson是Spring框架的缔造者,他在2002编著的《Expert one-on-One J2EE Design and Development》一书中,对JavaEE系统架构臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破JavaEE传统开发困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring框架以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。同年Rod Johnson又推出了一部堪称经典的力作《Expert one-on-one J2EE Development without JEB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思维方式。在该书中,Rod Johnson根据自己多年丰富的实践经验,对EJB的各种笨重且臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。从此,Spring框架得到快速发展。

简单来说,Spring是一个轻量级控制反转(IoC)和面向切面(AOP)容器开源框架

轻量:轻量与重量是一个相对的概念,大小开销两方面而言Spring都是轻量的。EJB比较大,且其启动时需要消耗大量的内存、CPU等资源,所以是重量级框架;而Spring则不是,所以是轻量级框架。

容器:该容器中存放Java对象,并且管理其内部存储Java对象的生命周期;

开源:可以从Spring官网下载到Spring源代码;

框架:为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。

Spring好处

该框架简化了程序开发,加快了软件开发进度——“君子生非异也,善假于物也”。

方便解耦,简化开发:

  • Spring就是一个大工厂,专门负责生成Bean,可以将所有对象创建和依赖关系维护由Spring管理

AOP编程的支持:

  • Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
  • 声明式事务的支持:

只需要通过配置就可以完成对事务的管理,而无需手动编程

方便程序的测试:

  • Spring对Junit4支持,可以通过注解方便的测试Spring程序

方便集成各种优秀框架:

  • Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的支持

降低JavaEE API的使用难度 Spring:

  • 对JavaEE开发中一些难用的API(JDBC、JavaMail、远程调webservice用等),都提供了封装,使这些API应用难度大大降低

Spring框架对象的实例

 在Java已有类中使用

<?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.xsd">
	<!-- 配置bean -->
	<!-- id属性:用于获取IOC容器中的Bean对象,具有唯一性 -->
	<!-- class属性:指定Bean对象由哪个类创建,为类的全类名 -->
	<bean id="obj" class="java.lang.Object">				
	</bean>
</beans>

从IOC容器中获取实例对象并调用方法 

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

	public static void main(String[] args) {
		
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");//创建集合(IOC容器),并将application.xml中bean放在容器中
		Object object = applicationContext.getBean("obj");//从IOC容器中获取Bean对象
		System.out.println(object);
		applicationContext.close();
	}
}

运行结果:

创建自定义类

package com.zzu.vo;

public class Student {

	String name;
	public Student() {
		super();
		System.out.println("-----");
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}	
}

在application.xml 中配置Student类: 

<?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.xsd">
	<!-- 配置bean -->
	<!-- id属性:用于获取IOC容器中的Bean对象,具有唯一性 -->
	<!-- class属性:指定Bean对象由哪个类创建,为类的全类名 -->
	<bean   id="student" class="com.zzu.vo.Student">
                <!-- 为name属性赋值 -->
		<property name="name" value="Tom"></property>		
	</bean>
</beans>

从IOC容器中获取实例对象并调用方法:

import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zzu.vo.Student;

public class Test {

	public static void main(String[] args) {
		
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");//创建集合(IOC容器),并将application.xml中类生成对象bean并放在容器中
		Student stu =(Student) applicationContext.getBean("student");//从IOC容器中获取Bean对象
		System.out.println(stu.getName());
		applicationContext.close();
	}
}

运行结果:

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值