一、spring简介
1、什么是spring
概念:Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 loC ( Inverse Of Control:反转控制)和 AOP (Aspect Oriented Programming :面向切面编程)为内核。 提供了展现层SpringMVC和持久层Spring JDBCTemplate 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架。
IOC:Spring的ioc容器作为spring的核心,IOC容器是一个具有DI(依赖注入:三种方式,接口注入,setter注入,Construct(构造方法)注入)功能的容器,负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通俗而言:就是将对我们对象的管理权交给框架,而不是程序员手动实现对象的实例化,控制反转就是这个。 AOP:面向切面编程,通俗理解就是,将一些与业务逻辑不相关,但是又对于系统结构很重要的一些重复出现的代码片段抽取出来封装为一个切面,注入到各个业务逻辑中去。比如:缓存,事物,日志打印等
2、简单理解:
为解决企业开发复杂性的一种轻量级开源框架。spring的简单分层为 web层,service层,dao层
3、spring 的优势
1)方便解耦,简化开发 通过Spring 提供的loC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。 2)AOP编程的支持 通过Spring的AOP功能,方便进行面向切面编程,许多不容易用传统ОOP实现的功能可以通过AOP轻松实现。 3)声明式事务的支持 可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。 4)方便程序的测试 可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。 5)方便集成各种优秀框架 Spring对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的支持。 6)降低JavaEE API的使用难度 Spring对 JavaEE APIl(如JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API的使用难度大为降低。
4、spring的体系结构
①Core Container(核心容器)
spring的核心容器是其他模块建立的基础,它主要由Beans模块、Core模块、Context-support模块和SpEL(Spring Express Language,Spring表达式语言)模块组成。
Beans模块: 提供BeanFactory,是工厂模块的经典实现,Spring将管理对象称为bean。
Core核心模块 提供Spring框架的基本组成部分,包括loC和DI功能。
Context上下文模块: 建立在Core和Beans模块的基础之上,它是访问定义和配置的任何对象的媒介。其中ApplicationContext接口是上下文模块的焦点。
Context-support模块: 提供了对第三方库嵌入Spring应用的集成支持,比如缓存(EhCache, Guava, JCache)、邮件服务(JavaMail)、任务调度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。
SpEL模块: 是Spring 3.0后的新增模块,它提供了Spring Expression Language支持,是运行时查询和操作对象的强大的表达式语言。
②Data Access/Integration(数据访问/集成)
数据访问/集成层包括:JDBC、ORM、OXM、JMS、和Transactions模块。 JDBC模块: 提供抽象层,大幅度减少了在开发过程中对数据库操作的编码。 ORM模块: 对流行的对象关系映射API,包括JPA、JDO和Hibernate提供了集成层支持。 OXM模块: 提供了一个支持对象/XML映射的抽象层实现。 JMS模块: 指java消息传递服务。 Transactions事务模块: 支持对实现特殊接口以及所有POJO类的编程和声明事务管理。
③web
Spring的web层包括WebSocket、Servlet、Web和Portlet模块。
④其他模块
Spring的其他模块还有AOP、Aspects、Instrumentation以及Test模块。
二、Spring的下载安装
1、下载
下载是在官网下的,太难了,我网站都打不开,下的时候下一个失败一个T^T,建议提前一个晚上下好。。 这里是spring framework的下载地址: http://repo.spring.io/release/org/springframework/spring 这是gradle的下载地址: https://gradle.org/next-steps/?version=4.3.1&format=all 阿里云仓库,据说这边下的快,但我不会用。。。 https://maven.aliyun.com/mvn/guide
第三方依赖包:http://commons.apache.org/proper/commons-logging/download_logging.cgi
2、spring目录结构
docs文件:spring的API文档和开发规范 libs文件:开发需要的JAR包和源码 schema文件:定义了spring相关配置文件的约束
libs中jar包分为三类 以RELEASE.jar结尾的是:Spring框架class文件的JAR包。 以RELEASE-javadoc.jar结尾的是:Spring框架API文档的压缩包。 以RELEASE-sources.jar结尾的是:Spring框架文件的压缩包。
其中有四个Spring的基础包,分别对应Spring核心容器的四个模块 spring-core-4.3.6.RELEASE.jar: 包含Spring框架基本的核心工具类,是其他组件的基本核心。 spring-beans-4.3.6.RELEASE.jar: 所有应用都要用到的JAR包。 spring-context-4.3.6.RELEASE.jar: 提供了在基础loC功能上的拓展服务等。 spring-expression-4.3.6.RELEASE.jar :定义了Spring的表达式语言。
3、配置(可跳过)
计算机系统属性-高级-环境变量 系统变量-新建(变量名、变量值如下)
最后在cmd上用gradle -v 验证一下
三、spring快速入门
1、eclipse版本
(1)在eclipse中建一个web项目,将图中这几个jar包,复制到lib文件夹中。 然后,选中这几个文件,右键bulid path (2)在src目录下,穿件,com.itheima.ioc 包,并在包中创建接口UserDao ,在接口中定义一个say 方法。
package com.itheima.ioc;
public interface UserDao {
public void say();
}
创建接口的实现类UserDaoImpl ,在接口中实现say 方法
package com.itheima.ioc;
public class UserDaoImpl implements UserDao {
@Override
public void say() {
System.out.println("userDao say hello World !");
}
}
(3)在src目录下,创建Spring的配置文件applicationContext.xml ,并在配置文件中创建一个id 为userDao 的Bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/scheama/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="userDao" class="com.itheima.ioc.UserDaoImpl"></bean>>
</beans
代码的前4句,可以在spring-5.2.9.RELEASE-dist\spring-framework-5.2.9.RELEASE\docs\spring-framework-reference 下,找到index.html 文件。在如图位置 这时候可能会发现代码报错:cvc-elt.1: Cannot find the declaration of element 'beans' ,我查的资料说可能是因为版本问题,可以换成如下代码。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans><bean id="userDao" class="com.itheima.ioc.UserDaoImpl"></bean></beans>
(4)在同一个包下,创建测试类TestloC ,并在类中,编写main()方法。在main方法中,初始化Spring容器,加载配置文件,然后通过Spring容器获取userDao 实例,调用实例中的say方法。
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestloC {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.say();
}
}
完成以上步骤,成功出现结果。
2、步骤
1,导入框架对应jar包 2,编写接口和实现 3,创建xml配置文件 4,将2中内容配置到配置文件中 5,根据spring客户端传递标识
|