Spring 框架简述。。?在IDEA上小小得搭建,以及浅说一下IOC

servlet基本框架都学过。servlet能进行:

  • 1.前端数据处理,
  • 2.业务助理,
  • 3.数据库交互。

他自己干完这三个,但是这种方式耦合度非常高,某一个地方发生改变就意味着整个servlet就得重写(耦合本身是一个工业上的概念,比如几个齿轮之间的互相咬合,其中一个齿轮坏了那剩余的也就无法正常运转了)。

了解知道servlet怎么运行的。知道servlet怎么运行的才能推导出Spring,包括SpringMVC。这些东西都是一脉相承的。

Servlet工作原理:假设。在tomcat上边去运行一个大的servlet项目,它其中包含 A.Servlet,B.Servlet,C.Servlet。浏览器上当前有一个页面,要做数据的提交,通过http形式通过url进行数据提交。本地正常访问方式 是:http:localhost:8080 / 项目名称 / Servlet名称。指定当前到底要访问A,B,C哪个servlet。当前这个请求一定是打到tomcat上去的,tomcat通过它转发器去处理当前的请求(类似于Rustmap),tomcat怎么去识别A,B,C这三个呢?,怎么做好一一的映射,这些servlet都是人写的,它是怎么去读取当中的信息的?这其实就是java中的一种功能那就是 --反射。通过某种反射机制获取到这么servlet所属的包名,返回给转发器。通过反射的方式在src目录下我们所见的任何java类都能够获取到,扫描之后进行反射,为什么把数据一定配置在src下,就是因为src下是扫描反射的地方,通过扫描某个包下的固定文件来拿到数据

 同理Spring也是,它需要我们配置扫描的功能(serlvet由开发它的人员已经配置好扫描的地方了),Spring开发随意度比较大(约定大于配置),必须手动配置扫描。(下方搭建环节有)

Spring就是去改变耦合度高这个问题,去不断的解耦合。Spring当中有两个非常重要的概念:一个叫 IOC,一个叫AOP

IOC:叫控制权反转,把创建对象的权力交给了Spring。

AOP:叫面向切面编程,在不修改原代码之下对功能进行增强。

核心本质都是在进行松耦合。

完整点的概述

Spring框架的介绍

1. Spring框架的概述

Spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。

Spring是于2003 年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE

Development and Design中阐述的部分理念和原型衍生而来。

它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

Spring的核心是控制反转(IOC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

IOC:控制反转,将创建对象的过程交给spring进行管理

AOP:面向切面,在不修改源代码的情况之下进行代码功能的增强

2. Spring框架的优点

方便解耦,简化开发,Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理,这也是IOC的作用。

AOP编程的支持,Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。

声明式事务的支持,只需要通过配置就可以完成对事务的管理,而无需手动编程。

方便程序的测试,Spring对Junit4支持,可以通过注解方便的测试Spring程序。

方便集成各种优秀框架,Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts2、

Hibernate、MyBatis等)的直接支持。

降低JavaEE API的使用难度,Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。

IDEA中搭建

1. 首先新建MAVEN项目。(无选择模板)

2.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>

 如图,(我用的自己的maven配置,idea上默认可能会报错。。可能)。

2.在main 下的java目录下新建一个包,包中创建一个Demo类。随意写个方法先

public class Demo {
    public void hello(){
        System.out.println("hello");
    }
}

3.编写Spring核心的配置文件,在resources目录下创建applicationContext.xml的配置文件,名称是可以任意的,但是一般都会使用默认名称(applicationContext.xml)。

此处就是要配置 扫描,配置要扫描哪个包下面的数据:这样写 其中 id 可随意写名称,class可以指定扫描哪个包也可以指定扫描哪个类。此处是指定扫描哪个类,即上方创建的Demo类

<!--    配置扫描-->
    <bean id="demo" class="com.qcby.Demo"></bean>

最后做个测试能不能使用到这个Demo,在test中随意写个类测试:传统调用

还可以 Spring自己的调用方式:

   @Test
    public void run1(){
        BeanFactory ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Demo demo= (Demo) ac.getBean("demo");
        demo.hello();
    }

浅说 IOC

显而易见,这Spring的调用方式看着没有传统的简洁啊。。。那为什么还写Spring,最开始提了,就是为了解耦。举个例子:创建 A,B,C三个类 ,C类中new一个A,B类中new一个C,A类中new一个B

 

三者呈现循环状态,耦合性比较高。不太好啊这这这。于是有个大聪明,让A,B,C三个把创建对象的权力给到自己,由大聪明来创建对象,A类想用B类中的方法,那就来调用大聪明,大聪明来帮A去调用B。

我把B中的new A删掉写一个方法叫 hi,,让A调用。则:

applicationContext.xml的配置文件  配置扫描:,A类中写:

(A B C各自相互调用同理)。这就是IOC 控制权反转:

 ,这样一旦ABC其中任何一个坏了,其他该正常运行还正常运行。

IOC的实现,依赖于以下3门技术

① dom4j解析xml文档;

② 工厂模式;降低耦合

③ 采用反射设计模式创建对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值