Spring框架

概述:

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来管理我们写的程序,来解决强耦合问题,细节请看下一篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sshm_666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值