概述:
Spring是一个开放源代码的设计层面框架(也就是我们可以改变里面的源代码来实现自己的逻辑),它解决的是业务逻辑层和其他各层的强耦合的问题,因此它将面向接口的编程思想贯穿整个系统的应用。
什么是耦合:
耦合就像是齿轮,齿轮进行转动时会带动其他齿轮进行转动,如果我们改变了一个齿轮的大小,那我们就要改掉另一个齿轮的大小。
比如servlet框架,它是一个强耦合框架,我们写一个servlet和使用jdbc来和数据库进行数据的增删改查时,因为耦合问题当我们要改变servlet数据、逻辑时或者jdbc里面的某些数据和逻辑时,我们不仅要更改servlet还要对jdbc进行更改并对项目进行重启。或者说某个servlet出现了问题,那么和这个servlet相关联的servlet或jdbc都不能用了,而spring框架就解决了这种问题。
Spring是2003年兴起的一个轻量级java开发框架,它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是他的分层架构,分层架构允许使用者选择使用哪一个组件,同时为JavaEE应用程序开发提供集成的框架。它的核心是控制反转(IOC)和面向切面(AOP)。简单来说,Spring是一个分层的Java SE/EEfull-stack(一站式)轻量级开源框架
IOC:控制反转,将创建对象的过程交给spring进行管理
AOP:面向切面,在不修改源代码的情况之下进行代码功能的增强
优点:
方便解耦,降低耦合,简化开发,Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理,这也是IOC的作用
AOP编程的支持,Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
声明式事务的支持,只需要通过配置就可以完成对事务的管理,无需手动编程。(在配置文件里完成对事务的管理,我们需要时只需要调用相应的配置文件就行)
方便程序测试,Spring支持Junit4,可以通过注解方便测试Spring程序
方便集成各种优秀框架,Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持。
降低JavaEE API的使用难度,Spring对java EE开发中非常难用的一些API(JDBC、JAVAMail等),都提供了封装,使我们使用API时简单方便。
创建一个Hello world
我们再idea里面创建一个maven工程,并在pom.xml配置文件里写入以下代码,导入坐标依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
填写位置如下
等依赖下载完成后,我们就可以创建Spring配置文件,如下图,我们创建在resources文件里
我们再在src包下面的java文件里创建一个Demo类,再写一个方法来输出Hello world
代码如下:
public class Demo {
public void run(){
System.out.println("Hello world");
}
}
我们不在main方法里运行而是我们通过配置文件对他进行管理
我们创建一个Spring配置文件
在里面写上如下代码,我们就完成了配置:
<bean id="demo" class="com.qcby.Demo"/>
我们调用时用的是工厂模式、解析xml文档和反射来创建对象,所以id里写的是我们通过反射创建对象后的对象名 ,class里面写的是我们的全类名(包加类名)
我们在这里对它进行测试:
代码如下:
public class SpringDemo {
//Test注解可以在左边绿标处直接运行程序,就像main方法
@Test
public void test(){
//创建spring工厂,加载配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取bean对象
Demo demo = (Demo) ac.getBean("demo");
//运行方法
demo.run();
}
}
运行结果:
我们一般通过这种配置文件xml来管理我们写的程序,来解决强耦合问题,细节请看下一篇