由于前几日刚刚学完Spring的基础,所以写一篇博客整理一下相关的基础知识。html
Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,帮助分离项目组件之间的依赖关系。,来源于 Rod Johnson 在其著做《Expert one on one J2EE design and development》中阐述的部分理念和原型衍生而来。java
Spring:SE/EE开发的一站式框架。web
一站式框架:有EE开发的每一层解决方案。spring
WEB层 :SpringMVCexpress
Service层 :Spring的Bean管理,Spring声明式事务apache
DAO层 :Spring的Jdbc模板,Spring的ORM模块编程
非侵入式指应用程序代码对框架的依赖最小化,即不须要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。tomcat
经过Spring提供的IoC容器,咱们能够将对象之间的依赖关系交由Spring进行控制,避免硬编码所形成的过分程序耦合。有了Spring,用户没必要再为单实例模式类、属性文件解析等这些很底层的需求编写代码,能够更专一于上层的应用。安全
AOP(Aspect Oriented Programming)面向切面编程。Spring提供了对AOP的支持,它容许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提升了程序的复用性。服务器
只须要经过配置就能够完成对事务的管理,不须要手动编程。
Spring对Junit4支持,能够经过注解方便的测试Spring程序。
Spring能够下降各类框架的使用难度,Spring提供了对各类优秀框架(如Struts、Hibernate、Hessian、Quartz)等的直接支持。
Spring对不少难用的Java EE API(如JDBC、JavaMail、远程调用等)提供了一个薄薄的封装层,经过Spring的简易封装,这些Java EE API的使用难度大为下降。
官方下载地址:https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring
选择相应的版本下载就能够了,注意:jdk1.7只能和spring4.0如下的包搭配使用,而你要是用Spring4.0以上的包就要用jdk1.8.0乃至以上的版本。
下面对照结构图说一下每一个jar包的做用
spring4中的jar包一共有20个
Core部分包含4个模块
AOP部分包含4个模块
Data Access/Integration部分包含5个模块
Web部分包含3个模块
Test部分一个模块
剩下的包是
除了Spring的包以外,在开发中还会用到一个依赖包,即
下载地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi
1 package spring_test1.pojo; 2 3 /** 4 * @author jyroy 5 * 6 */ 7 public class User { 8 private String name; 9 private int id; 10 11 public String getName() { 12 return name; 13 } 14 public void setName(String name) { 15 this.name = name; 16 } 17 public int getId() { 18 return id; 19 } 20 public void setId(int id) { 21 this.id = id; 22 } 23 @Override 24 public String toString() { 25 return "User [name=" + name + ", id=" + id + "]"; 26 } 27 }
编写配置文件要作的就是将类交给Spring管理
在src目录下新建Spring核心的配置文件applicationContext.xml
这个配置文件要怎么写呢?
首先要写的,就是XML配置文件的约束,那约束怎么写呢?只要去 spring-framework-4.3.20.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html 目录下找到相关的约束复制到xml中就能够了,剩下要作的就是对于类的配置了。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd"> 8 9 <!--Spring的入门的配置--> 10 <bean name="user" class="spring_test1.pojo.User"> 11 <property name="name" value="李东"/> 12 <property name="id" value="1007" /> 13 </bean> 14 15 </beans>
用到了ApplicationContext,它是一种经常使用的Spring核心容器。提供了完整的IOC服务支持,是管理Bean的工厂,主要负责初始化各类Bean,并调用Bran生命周期的方法,还包含对国际化、资源访问、事件传播等方面的支持。
建立ApplicationContext接口实例,一般有两种方式:
1 package spring_test1.test; 2 3 import org.junit.Test; 4 import org.springframework.context.ApplicationContext; 5 import org.springframework.context.support.ClassPathXmlApplicationContext; 6 7 import spring_test1.pojo.User; 8 9 public class UserTest { 10 11 @Test 12 public void demo1() { 13 //建立Spring的工厂 14 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); 15 //经过容器获取user对象 16 User user = (User) applicationContext.getBean("user"); 17 System.out.println(user); 18 } 19 }
IOC (Inversion Of Control):控制反转。这是一种设计思想,就是将本来在程序中手动建立对象的控制权,交由Spring框架来管理。
DI (Dependency Injection): 依赖注入。将对象依赖属性(简单值,集合,对象)经过配置设值给该对象。
上面的例子中,便应用了IOC和DI,这里详细的说一下。
能够看到,咱们并无进行 new 实例化,可是仍是产生对象了,这就是利用了IOC容器,进行建立对象,其中 User user = (User) applicationContext.getBean("user"); 即是经过Spring容器获取的实现类对象,而不是经过 new 关键字来建立user。
其中name和id的设置即是应用了依赖注入,经过set方法进行的基本数据类型的注入。
经过new关键字来实例化,建立对象。
Category c = new Category();
对象的生命周期由Spring来管理,而不须要经过显式的new来实现。即控制权从原本在本身手里,如今交给了Spring。
Category c = Spring产生。
这篇都是Spring介绍和一点点基础。关于细节的地方没有展开。我慢慢来。