JavaEE框架---Spring---入门

Spring开源框架

Spring在英语中含义是春天,对于Java EE开发者来说,Spring框架出现确实带来了一股全新的春天的气息。早在2002年,Rod Johson在其编著的Expert one to one J2EE design and development书中,对Java EE框架臃肿、低效、脱离现实的种种现状提出了很多质疑,并积极寻求探索革新之道。由他主导编写了interface21框架,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署轻量级开发框架。以interface21框架为基础,并集成了其它许多开源成果,于2004324日,发布了1.0正式版取名为Spring

1、核心容器(Core)

        这是Spring框架最基础的部分,它提供了依赖注入(Dependency Injection)特征来实现容器对Bean的管理。这里最基本的概念是BeanFactory,它是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用IoC应用配置和依赖说明从实际的应用代码中分离出来

2AOP模块

      AOP即面向切面编程技术Spring在它的AOP模块中提供了对面向切面编程的丰富支持。AOP允许通过分离应用的业务逻辑与系统级服务(例如安全和事务管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责其它的系统级关注点,例如日志或事务支持

3、对象/关系映射集成模块ORM

     Hibernate是成熟的ORM产品,Spring并没有自己实现ORM框架而是集成了几个流行的ORM产品如HibernateJDOiBATIS。可以利用Spring对这些模块提供事务支持等。

4JDBC抽象和DAO模块

     Spring虽然集成了几个ORM产品,但也可以不选择这几款产品,因为Spring提供了JDBCDAO模块。该模块对现有的JDBC技术进行了优化。你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题

5SpringWeb模块

      Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如StrutsWebWork

6、应用上下文(Context)模块

       核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。该模块还提供了一些面向服务支持这个模块扩展了BeanFactory的概念,增加了对国际化(I18N)消息、事件传播以及验证的支持。

      另外,这个模块还提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括对模版框架例如VelocityFreeMarker集成的支持。

7SpringMVC框架

      Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts2,但SpringMVC框架使用IoC对控制逻辑和业务对象提供了完全的分离

Spring5.x入门Java项目示例

准备jar包

下载地址选择相应的版本。搭建Spring框架需要最基本的5个包:

 *          Appache的 commons-logging-1.2.jar
 *         Spring的  spring-beans-5.0.1.RELEASE.jar
 *                 spring-context-5.0.1.RELEASE.jar
 *                 spring-core-5.0.1.RELEASE.jar
 *                 spring-expression-5.0.1.RELEASE.jar

需要xml文件

推荐存放位置:classpath,推荐文件名:applicationContext.xml。Spring,IoC容器的核心配置文件。

<?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
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	">
	
	<!-- 默认Bean是单例 ,即 scope="singleton" --> 
	<bean id="u1" class="cn.hncu.ioc.v1.User" >
		<property name="name" value="Jack"></property>
	</bean>
	
</beans>

需要一个bean

package cn.hncu.ioc.v1;

public class User {
	private String name;
	public User() {
		System.out.println("调用了空参构造...");
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "User [name=" + name + "]";
	}
}

技术入口:

使用org.springframework.context.support.ClassPathXmlApplicationContext类进行加载classpath下的xml文件,进行初始化Application上下文容器。

package cn.hncu.ioc.v1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/* 搭建Spring5.0框架最基本需要:
 * 1) 5个jar包: 
 * 		Appache的 commons-logging-1.2.jar
 * 		Spring的  spring-beans-5.0.1.RELEASE.jar
 * 				spring-context-5.0.1.RELEASE.jar
 * 				spring-core-5.0.1.RELEASE.jar
 * 				spring-expression-5.0.1.RELEASE.jar
 * 
 * 2) 需要一个xml文件:
 * 		推荐文件名:'applicationContext.xml' 
 * 		推荐存放路径:ClassPath下
 * 
 * 3) 技术入口:ApplicationContext类
 * 			通过其子类 ClassPathXmlApplicationContext 进行读取xml文件从而加载容器
 */
public class Hello {
	public static void main(String[] args) {
		//1 加载容器
		ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		//通过 观察控制台输出 可以 发现,默认的Bean 是容器一加载 就new出来的。
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		//2 从容器中拿出一个Bean
		User user = appCtx.getBean( User.class );
		System.out.println( user.hashCode() );
		
		//观察控制台可以发现 三个User类对象的hashCode是一样的,所以:默认的Bean是单例。
		
		User user2 = appCtx.getBean( User.class );
		System.out.println( user2.hashCode() );
		
		User user3 = appCtx.getBean( User.class );
		System.out.println( user3.hashCode() );
		
		
		((AbstractApplicationContext) appCtx).close();//关流,以防内存泄漏
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值