spring学习之spring入门
一 spring的基础
1:什么是spring
spring是由Rod Johnson组织和开发的一个分层 的Java SE/EE 一站式轻量级开源框架,它以Ioc(控制反转)和 AOP(面向切面编程)为内核,使用了基本的JavaBean来代替了以前由EJB完成的工作,取代了EJB 的臃肿,低效。
一站式:spring在JavaEE三层框架中(表现层,业务逻辑层,持久层)分别提供了不同的解决技术
表现层:spring中的springmvc
service层:spring的ioc
dao层:spring的jdbcTemplate
轻量级:不需要其他很多的其他东西来支持
框架:是能够完成一定功能的半成品。
框架能够帮助我们完成的是:项目的整体开发框架,一些基础功能,规定了类和对象怎么创建,如何协作,在我们开发一个项目时,框架能够帮助我们完成一部分的功能,我们自己需要完成一部分的功能,
2:spring框架的优点
- 非侵入式设计:从框架的角度来看,无需继承框架提供的任何类。
- 方便解耦 :spring就是一个大工厂,可以将所有的对象的创建和依赖关系的维护工作都交给spring来管理,大大降低了组件之间的耦合性。
- 支持AOP:spring提供了AOP的支持,它允许将一些通用的任务,入安全,事务,日志等功能进行集中处理。
- 支持是声明式事务处理:只要通过配置就可以完成对事务的管理,而无需手动的编程。
- 方便程序的测试:spring提供了Junit4的支持,可以通过注解方便的测试spring程序。
- 方便集成各种框架:spring不排斥各种优秀的框架,其内部提供了各种框架的直接支持。
- 降低了javaEE 中一些API的使用难度。
3:Spring的体系结构
spring体系结构图
spring框架采用的是分层架构,它是一系列的功能要素被分为20个模块,主要是Core Container,Data Access/Integration,Web,AOP,Instrumentation,Messaging和Test。
4.spring的下载
Spring压缩包可以通过地址官网下载,点击 http://repo.spring.io.
鼠标点击左边>>符号展开菜单选择Artifacts选项。
选择子菜单下的libs-release-local 选项。
依次进入其子目录org/springframework/spring 就能看到spring 各版本信息了。
选择你需要的spring版本例如4.3.2.RELEASE点击打开选择 ,spring-framework-4.3.2.RELEASE-dist.zip 下载解压即可获得jar包api等等文件。
直接获取方法。URL为最Spring最新4.3.2版本 地址,获取其他版本只需修改下面链接的4.3.2的版本号信息成想要的版本即可。
docs文件夹中包含了spring的API文档和开发规范,libs文件夹中包含了开发所需要的jar包和源码,schema文件夹中包含了开发搜需要的schema文件,这些文件中定义了spring相关配置文件的约束。
libs中的包分为三种:一种是以javadoc结尾的是spring框架API文档的压缩包,以source结尾的是spring框架源文件的压缩包,另一个就是spring框架class文件的压缩包。
spring的核心包主要由四个:spring-core- ,spring-beans- ,spring-context-,spring-expression-,
spring还需要一个依赖包:commons-logging-
二 spring的核心容器
spring框架的主要功能是通过其核心容器来实现的,spring框架提供了两种核心容器:Bean Factory(不常用) 和 Application Context。
容器:从日常来讲,就是盛装东西的组件,从程序来讲,就是装对象的对象,因为存在放入,拿出等操作,还要管理对象的生命周期。
主要讲ApplicationContext容器。
ApplicationContext容器是BeanFactory的子接口,也被称为应用上下文,是spring框架常用的容器
1.ApplicationContext容器的获取:
-通过ClassPathXmlApplicationContext创建
ClassPathXMLApplicationContext会从类路径classpath中去获取指定的XML文件,找到并装载完成ApplicationContext的实例化工作。
AppliationContext applicationContext= new ClassPathXmlApplicationContext(String configLocation);
上述代码中,configLocation是指定spring配置文件的位置和名称。
-通过FileSystemXmlApplicationContext创建
ApplicationContext applicationContext=new FileSystemApplicationConext(String configLocation);
与第一种方法有所不同的是第二种方法使用的路径不是从类路径中去找,而是从给定的位置去找,例如“D:/work/applicationContext.xml”,如果早参数中写的不是路径,这个方法调用的时候回默然使用绝对路径来找,注意:这种使用绝对路径的方法,会导致程序的灵活性变低,
在使用spring框架时,可以通过实例化任何一个类创建ApplicationContext容器。
通常在java程序中,是采用通过ClassPathXMLApplicationContext来实例化ApplicationContext容器的。
在web项目中,通常是把ApplicationContext实例化的工作交给web服务器,web服务器实例化ApplicationContext容器时,通常使用基于ContextLoaderListener实现的方法,这种配置要在web.xml中配置如下代码:
<!--指定spring配置文件的位置,多个配置文件时,以逗号分开-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--将加载spring目录下的ApplicationContext.xml文件-->
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<!--指定以ContextLoaderListener方式启动spring容器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2.使用spring容器来获取bean
spring获取bean的实例通常有两种方法:
Object getBean(String name):根据容器中的bean的ID值来获取指定 的bean,获取之后要进行强制类型转换。
<T> T getBean(Class<T> requiredType):根据类的类型来获取Bean的实例,该方法为泛型,不需要进行强制类型转换。
注意:当使用BeanFactory和ApplicationContext两种容器都是通过XML配置文件来获取bean,两者的区别在于,如果bean的某一个属性没有注入,在使用BeanFactory加载时,在第一次获取bean时会报错,如果使用的是ApplicationContext,会在初始化时自检,这样会有利于检查所有的依赖属性是否注入。
spring学习之spring入门的更多相关文章
- Spring学习(十一)-----Spring使用@Required注解依赖检查
Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...
- Spring学习(六)-----Spring使用@Autowired注解自动装配
Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...
- Spring学习笔记--spring+mybatis集成
前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, ...
- spring学习(三) ———— spring事务操作
前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...
- spring学习12 -Spring 框架模块以及面试常见问题注解等
以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...
- Spring学习【Spring概述】
从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架. 当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的.以下 ...
- Spring学习笔记—Spring之旅
1.Spring简介 Spring是一个开源框架,最早由Rod Johnson创建,并在<Expert One-on-One:J2EE Design and Development> ...
- Spring学习2—Spring容器
一.Spring容器接口关系 容器是Spring框架的核心,Spring容器就是一个巨大的工厂.Spring容器使用Ioc(控制反转(Inversion of Control )管理所有组成应用系统的 ...
- spring 学习 一 spring 介绍
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring ...
随机推荐
- 刷题49. Group Anagrams
一.题目说明 题目是49. Group Anagrams,给定一列字符串,求同源词(包含相同字母的此)的集合.题目难度是Medium. 二.我的做法 题目简单,就不多说,直接上代码: class So ...
- web安全(xss攻击和csrf攻击)
1.CSRF攻击: CSRF(Cross-site request forgery):跨站请求伪造. (1).攻击原理: 如上图,在B网站引诱用户访问A网站(用户之前登录过A网站,浏览器 cookie ...
- windows平台上运行Flink_转载于CSDN
Flink安装部署-window 本地部署原创冰上浮云 发布于2019-08-17 15:56:06 阅读数 633 收藏分类专栏: flink版权声明:本文为博主原创文章,遵循 CC 4.0 BY- ...
- VUE3.x 前瞻
文档: API Reference 教程 课件 1. 初始化项目 // ① npm i -g @vue/cli // ② vue create my-project // ③ npm install ...
- idea新建maven web项目
一.新建maven web项目 二.配置服务器 三.测试运行
- python进阶—OpenCV之常用图像操作函数说明(转)
文章目录cv2.thresholdcv2.bitwise_andcv2.bitwise_orcv2.bitwise_notcv2.inRangecv2.resizecv2.adaptiveThresh ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 动态内存
栈:在函数内部声明的所有变量都将占用栈内存. 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存. 可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址.这种运 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-share
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- Redis Sentinel 学习笔记
转载出处: http://blog.csdn.net/lihao21 概述 Redis Sentinel 是用来实现 Redis 高可用的一套解决方案.Redis Sentinel 由两个部分组成:由 ...
- Petr#(字符串哈希)
CF113B Petr# 大概就是字符串匹配加一个字符串哈希判重.懒得打kmp,就用字符串哈希匹配了. 字符串哈希大概就是把字符串转成一个p进制的数,每一段字符串都有一个对应的哈希值.p尽量取质数,这 ...