您的位置:首页 > 编程语言 > Java开发

(一)Spring4.0初步认识

2016-06-30 10:46 453 查看
1.什么是spring框架

spring框架是一个轻量级的Java EE框架。所谓轻量级,是指不依赖容器就能运行的。struts和hibernate也是轻量级的。

Spring 是一个 IOC(DI) 和 AOP 容器框架.
spring最主要的思想是ioc(Inversion of Control,控制反转)或者成为DI(Dependency Injection,依赖注入)

具体描述 Spring:

–轻量级:Spring
是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API

–依赖注入(DI ---dependency injection、IOC)

–面向切面编程(AOP ---aspect oriented programming)

–容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期

–框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象

–一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 SpringJDBC)

2.搭建spring开发环境

2.1 spring4.0jar包的引入

spring最基本的jar包有

spring-expression-4.0.0.RELEASE.jar

spring-core-4.0.0.RELEASE.jar

spring-context-4.0.0.RELEASE.jar

spring-beans-4.0.0.RELEASE.jar

commons-logging-1.1.1.jar

上面是spring最基本的jar包,下面会贴出其它jar包和该jar包的作用。引入这几个jar包并添加到类路径中。

2.2 spring的配置文件

一个典型的 Spring 项目需要创建一个或多个 Bean 配置文件, 这些配置文件用于在Spring IOC 容器里配置 Bean. Bean 的配置文件可以放在classpath下, 也可以放在其它目录下.

3.一个依赖注入的简单例子

3.1普通的java例子

编写一个HelloWorld类

package com.beans;

public class HelloWorld {
private String name;

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

public void hello(){
System.out.println("hello:" + name);
}
}
这个类有一个属性name,提供了set方法,并有一个hello()方法。

编写一个main

package com.beans;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
HelloWorld helloWorld = new HelloWorld();//创建HelloWorld对象
helloWorld.setName("Spring");//为name属性赋值
helloWorld.hello();
}

}
输出 hello:Spring

以上是我们不适用spring时的方法

3.2使用spring的例子

首先配置spring的配置文件,该配置文件命名为applicationContext.xml,同时放在类路径下面

<?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"> <!-- class指的是要使用的类,id标识该类 -->
<bean id="helloWorld" class="com.beans.HelloWorld">
<!-- name值得是该类set后面的参数 如 本例中是setName 那么name="name" 如果是setName2,那么name="name2"
否则会报错  value属性则是设置的值-->
<property name="name" value="spring1"></property>
</bean>
</beans>


重新编写Main

package com.beans;

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

public class Main {

public static void main(String[] args) {
//1.创建spring的IOC容器
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
//2.从IOC容器中获取bean实例
HelloWorld helloWorld=(HelloWorld) applicationContext.getBean("helloWorld");
//3.调用hello方法
helloWorld.hello();
}

}
输出 hello:spring1

如果把上面的Main类中的2和3步骤去掉,会发现创建springIOC容器的时候,会初始化类的构造函数并个set方法赋值。

由上面两个对比可知,spring来创建这个HelloWorld类,然后通过spring容器来获取创建的类调用它的方法。

这就是spring的依赖注入的思想。

下面是spring的jar包的介绍

Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现
Spring Aspects:Spring提供的对AspectJ框架的整合
Spring Beans:Spring IOC的基础实现,包含访问配置文件、创建和管理bean等。
Spring Context:在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。
Spring Context Support:Spring context的扩展支持,用于MVC方面。
Spring Core:Spring的核心工具包
Spring expression:Spring表达式语言
Spring Framework Bom:
Spring
af58
Instrument:Spring对服务器的代理接口
Spring Instrument Tomcat:Spring对tomcat连接池的集成
Spring JDBC:对JDBC 的简单封装
Spring JMS:为简化jms api的使用而做的简单封装
Spring Messaging:
Spring orm:整合第三方的orm实现,如hibernate,ibatis,jdo以及spring 的jpa实现
Spring oxm:Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换
Spring test:对JUNIT等测试框架的简单封装
Spring tx:为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。
Spring web:包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
Spring webmvc:包含SpringMVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。
Spring webmvc portlet:Spring MVC的增强
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: