美文网首页
Spring起步

Spring起步

作者: hangover_bfc9 | 来源:发表于2019-02-26 20:13 被阅读0次

一、后端开发的概念和技术栈

1.1 什么是后端开发?

后端开发

后端开发需要的技能

1.2 Java后端技术图谱

Java后端技术框架

二、JavaEE概念

2.1 JavaEE基本概念

JavaEE 是 J2EE的一个新的名称,之所以改名,目的还是让大家清楚J2EE只是Java企业应用。但那是需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本,因此J2EE改名为Java EE,实际也反映出业界这种共同心声。JavaEE应该是J2EE的延伸。

J2EE是一个标准,这个标准不仅定义了基本的规范和接口,也有一些比较固定的架构模型。J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。

在传统的不分层的软件架构中,客户端担当了过多的角色而显得庞大而且不容易进行维护和修改,扩展性非常差,它使得重用业务逻辑和界面逻辑非常困难。现在JavaEE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层。使得扩展性和重用性得到大大的提高。

2.2 JavaEE架构图

JavaEE架构图

2.3 JavaEE构架理解

(1)Client tier客户层,运行在客户端机器上。客户层普遍地支持HTTP协议,也称客户代理。具体表现为Java  Applet程序、Java桌面程序、浏览器等。

(2)WEB tier WEB应用层,运行在JavaEE服务器上。在JavaEE中,这一层由WEB 容器运行,它包括JSP, SERVLET等WEB部件。这里的WEB容器具体表现为Tomcat等。

(3)EJB tier 企业组件层,运行在JavaEE服务器上。企业组件层由EJB容器运行,支持EJB等服务和技术。这里的EJB容器具体表现为JBoss等

(4)EIS tier 企业信息系统(Enterprise information system)层,运行在EIS服务器上。企业信息系统包含企业内传统信息系统如财务,CRM等,特点是有数据库系统的支持。一般中小型系统直接表现为数据库系统。

        JavaEE的整个应用程序是由组件构成的,JavaEE组件是具有独立功能的软件单元。JavaEE的四层模型的每一层都也是对相近功能的组件的封装。下面对这个架构图谈谈个人的理解:

(1)在C/S架构的客户层、Applet为表现形式的客户层、Web层、EJB层都可能需要J2SE支持。

(2)在C/S架构的客户层、Web层、EJB层可以调用JavaEE的基本组件和服务,比如JTA、JPA、JNDI、JMS等等。

(3)如果是C/S架构,那么客户层直接和EJB层或者直接和企业信息系统(最典型的是DB)交互(当然这种直接和DB交互的架构也无所谓分层了),当然这里的EJB层也可以不部署EJB容器,直接为Java服务端,这也是最原始、简单的C/S应用模式。

(4)如果是B/S架构,那么客户层直接Web层交互,Web层又可以和EJB层交互。

2.4 JavaEE架构与分层的Web结构

三层结构:在C/S或B/S架构的应用中,为了提供程序的可扩展性,一般需要将表示与业务逻辑分离,业务逻辑和数据处理分离,因此一般分为三层结构:表示层、业务逻辑层、数据访问层(数据持久)。在java开发过程中一般 将对应的packet分别命名为ui(view),business(service),dao。

对应关系:因此,分层的Web架构和具体组件对应如下:

1)表示层:Struts-MVC、Spring-MVC、ActionServlet、Struts-Action、JSP、XML、JS等

2)业务逻辑层:Spring-Ioc、Spring-Transaction等

3)数据持久层:Hibernate、连接池、JDBC等

Java Web架构:根据技术的发展,Java的Web架构可以有如下选择

1)JSP(原始社会UI和业务逻辑处理都在里面) 

2)JSP+JavaBean(UI和业务逻辑相对分离,但是分离不够明显)

3)JSP+JavaBean+Servlet(使用Servlet进行跳转和事件的分发,逻辑进一步清晰)

4)JSP+JavaBean+Struts(Struts提供了一个框架处理跳转等等)

5)JSP+JavaBean+Struts+hibernate(由JDBC改为hibernate持久化)

6)JSP+JavaBean+Spring(Spring提供了一个框架处理跳转等等)

7)JSP+JavaBean+ Spring +hibernate(由JDBC改为hibernate持久化)

8)JSP+JavaBean+ Struts+Spring(Struts处理表示层和相关控制,Spring专门处理业务逻辑)

9)JSP+JavaBean+ Struts+Spring+Hibernate(Struts处理表示层和相关控制,Spring专门处理业务逻辑,Hibernate负责持久化)

10)上面的框架中可以使用JS或者JS框架来处理负责的表示层逻辑处理。

JavaEE架构和分层的Web结构关系:至于上面的的分层结构和JavaEE的分层关系应该比较清楚了。如果B/S架构中没有EJB这一层,那么上面的分层结构应该都可以部署在JavaEE的Web层,当然如果需要EJB这层,那么业务处理和持久化也可以部署在EJB这层。

三、Spring框架两大核心特征及构成

3.1 loC(控制反转)

IoC(控制反转)是Spring的一个容器,他不是一种技术,而是一种思想,依旧是基于面向对象编程的。它能指导我们怎么样设计出松耦合、更优良的程序。

简单来说,如果现在有两个(甚至更多)类,A类和B类,A类要引用B类中的某个方法,传统编程是在A类中实例化一个B类,也就是通过new,然后打点调方法,而我们知道,代码高耦合最大的原因就是用了new。利用Spring框架就将实例化的过程交给了IoC容器,通过配置文件中的设置Bean或者B类中添加注解,A类可以不能new通过ApplicationContext的getBean方法得到实例,然后打点调方法就可以了,减少了两个类之间的耦合度。

IoC三种注入方式:

(1)接口注入(不推荐)

(2)构造方法注入(死的应用)。时效性好,但是灵活性差。

(3)赋值方式注入(常用)。时效性差,但是灵活性好,需要有set方法。

3.2 AOP(面向接口编程)

AOP(面向接口编程),同样的,他也是一种思想,而不是技术。和OOP(面向对象编程)相比较,AOP是对OOP的补充。OOP是静态的抽象,而AOP是动态的抽象。关于AOP的概念,简单来说就是将一个工程中与源代码无关,但是很多地方都要用,抽出来也不影响源代码上下文的那一部分代码抽出来,然后要用的时候就织入进去,进行使用,至于是在指定的代码之前使用还是之后又或者异常使用等,可以动态的进行。就好比你要结婚,婚礼的整个流程你可以自己负责,但是会耗费你的时间精力,这时候,你也可以选择将婚礼交给婚庆公司,你不再需要负责婚礼的具体筹备过程,只需要在婚礼当天使用婚庆公司给你的成果。所以说AOP是基于代理模式下进行的。

AOP的七个专业术语,为了理解,我们将整个AOP的专业属于比喻成在切片吐司上抹面包酱。

(1)目标对象(Target):我们需要对他进行操作的业务类。

我们要抹面包酱,就需要一片土司,那么这个吐司就是我们的目标对象。

(2)连接点(Joinpoint):连接点就是程序执行的某个特定的位置。

有了吐司之后,要抹面包,我们要找到抹的位置。

(3)切点(Pointcut):一个项目中有很多的类,一个类有很多个连接点,当我们需要在某个方法前插入一段增强(advice)代码时,我们就需要使用切点信息来确定,要在哪些连接点上添加增强。

要抹面包酱,我们需要知道连接点,也就是抹的位置,一块吐司的面很大,哪里都能抹下去,但是我们不能瞎抹,要知道磨的位置的信息,根据这些信息找到位置

(4)增强(也有叫通知的)(Advice):AOP(切面编程)是用来给某一类特殊的连接点,添加一些特殊的功能,那么我们添加的功能也就是增强。

抹面包,我们除了有吐司,还需要面包酱,增强就是这个面包酱

(5)切面(Aspect): 是通知和切点的结合,通知和切点共同定义了切面的全部内容

(6)织入(Weaving): 织入就是将增强添加到目标类具体连接点上的过程

将面包酱摸到吐司的抹个面上,就是织入

(7)AOP代理(AOP proxy):一个类被AOP织入后生成出了一个结果类,它是融合了原类和增强逻辑的代理类

吐司抹好了的那一面以及没有抹的那几面,构成的新吐司就是AOP代理。

四、Spring的起步练习步骤

1.准备maven环境,下载并在idea中配置好(如图所示)

maven压缩包 配置效果 配置效果

2.接着新建项目,建完右击项目名,选择——Add Frameworks Support——最后面的maven——等待下载

第一步

3.一切完善后,在pom中添加依赖包

依赖包

4.建立一个类,然后在resources中编写beans.xml文件

beans.xml beans.xml内容

5.编写代码,进行调试

注意事宜:

1.所有保存路径中的文件夹都不能出现中文名称,配置名称确保一致。

2.在调试过程中,要留意代码大小写以及确保不会敲错代码,而导致错误。

3.在Spring的beans.xml配置中,要注意constructor-arg和property、value和ref的使用规范。

相关文章

  • 手写MyBatis起步依赖

    spring-boot起步依赖 自动整合第三方组件 与 spring/springMVC框架 起步依赖本质就是 利...

  • spring起步

    一、后端开发的概念和技术栈 1.1什么是后端开发 后端开发 1.2Java后端技术图谱 二、JavaEE概...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发含义 1.2 Java后端技术图谱? 二、JavaE...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发 (https://blog.csdn.net/o4dc8ojo...

  • Spring起步

    一. 后端开发的概念和技术栈 1.1 什么是后端开发? https://blog.csdn.net/o4dc8oj...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发 (https://blog.csdn.net/o4dc8ojo...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? https://blog.csdn.net/jly59476...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 什么是后端开发 Java后端技术栈梳理 1.2 Java后端...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发 后端开发需要的技能 1.2 Java后端技术图谱 ...

  • Spring起步

    Spring起步 什么是Spring? Spring的核心是提供一个容器(container),通常称为Sprin...

网友评论

      本文标题:Spring起步

      本文链接:https://www.haomeiwen.com/subject/mhzbcqtx.html