当前位置:   article > 正文

JavaEE企业级应用软件开发—Spring框架入门学习笔记(一)

JavaEE企业级应用软件开发—Spring框架入门学习笔记(一)

一、认识框架

 实际开发中,随着业务的发展,软件系统变得越来越复杂,如果所有的软件都从底层功能开始开发,那将是一个漫长而繁琐的过程。此外,团队协作开发时,由于没有统一的调用规范,系统会出现大量的重复功能的代码,给系统的二次开发和维护带来不便。为解决上述问题,框架应运而生。框架实现了很多基础性的功能,开发人员不需要关心底层功能操作,只需要专心地实现所需要的业务逻辑,大大提高了开发人员的工作效率。当前市场上的Java EE开发主流框架有Spring、SpringMVC和Mybatis等。

二、为什么要学Spring框架

 Spring致力于解决Java EE应用中的各种问题,对于一个Java开发者来说,Spring框架的熟练使用是必备的技能之一。Spring具有良好的设计和分层结构,它克服了传统重量型框架臃肿、低效的劣势,大大简化了项目开发中的技术复杂性。

三、什么是Spring

1、 我们经常挂在口中的Spring指的是Spring Framework(Spring 框架)它是一个开源框架,有着活跃而庞大的社区。这就是它之所以能长久不衰的原因,Spring支持广泛的应用场景,它可以让Java企业级开发应用程序开更简单。

2、Spring是由Rod Johnson组织和开发的一个分层的Java SE/EE一站式(full-stack)轻量级开源框架。它最为核心的理念是IoC(控制反转)和AOP(面向切面编程),其中,IoC是Spring的基础,它支撑着Spring对JavaBean的管理功能;AOP是Spring 的重要特性,AOP是通过预编译方式和运行期间动态代理实现程序功能,也就是说可以在不修改源代码的情况下,给程序统一添加功能。

 3、 Spring 5框架组成模块:Spring 框架主要有8大模块,每个大模块由多个或1个小模块组成,如Spring的核心容器模块(Core Container)是由Beans模块、Core模块、Context模块和SpEL模块组成。

4、框架体系图

四、Spring的设计理念(来源于官网介绍)

  • 在每个层面上提供选择。Spring让你尽可能晚地推迟设计决策。例如,你可以通过配置来切换持久化供应商,而不需要改变你的代码。对于许多其他基础设施问题和与第三方API的集成也是如此。

  • 适应不同的观点。Spring拥抱灵活性,对事情应该如何做不持意见。它支持具有不同视角的广泛的应用需求。

  • 保持强大的后向兼容性。Spring的演进是经过精心管理的,在不同的版本之间几乎不存在破坏性的变化。Spring支持一系列精心选择的JDK版本和第三方库,以方便维护依赖Spring的应用程序和库。

  • 关心API的设计。Spring团队花了很多心思和时间来制作直观的API,并且在很多版本和很多年中都能保持良好的效果。

  • 为代码质量设定高标准。Spring框架非常强调有意义的、最新的和准确的javadoc。它是为数不多的可以宣称代码结构干净、包与包之间没有循环依赖关系的项目之一。

五、第一个Spring项目---Hello Spring!!! 

1、在idea中创建Maven项目

2、在pom.xml文件中加载需使用到的Spring基础包以及Spring依赖包并重新加载

具体代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.example</groupId>
  7. <artifactId>Springdemo01</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <properties>
  10. <maven.compiler.source>8</maven.compiler.source>
  11. <maven.compiler.target>8</maven.compiler.target>
  12. <org.springframework.version>4.3.19.RELEASE</org.springframework.version>
  13. <commons-logging.version>1.2</commons-logging.version>
  14. </properties>
  15. <dependencies>
  16. <!-- Spring核心依赖 -->
  17. <dependency>
  18. <groupId>org.springframework</groupId>
  19. <artifactId>spring-core</artifactId>
  20. <version>${org.springframework.version}</version>
  21. </dependency>
  22. <!-- Spring 容器包 -->
  23. <dependency>
  24. <groupId>org.springframework</groupId>
  25. <artifactId>spring-context</artifactId>
  26. <version>${org.springframework.version}</version>
  27. </dependency>
  28. </dependencies>
  29. </project>
  30. <!--可作为Spring学习的pom.xml模板,注意Maven中pom.xml的配置要求-->

3、创建名为HelloSpring的类,在HelloSpring类中定义userName属性和show()方法。

  1. package com.itheima;
  2. public class HelloSpring {
  3. private String userName;
  4. public void setUserName(String userName){
  5. this.userName=userName; }
  6. public void show() {
  7. System.out.println(userName+":欢迎进入Spring学习,我是Spring的开发者");
  8. }
  9. }

4、在resources下新建applicationContext.xml文件作为HelloSpring类的配置文件,并在该配置文件中创建id为helloSpring的Bean

注意: XML文件包含了很多约束信息,如果自己动手去编写,不但浪费时间,还容易出错。XML的约束信息如下所示。

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
  3. http://www.springframework.org/schema/beans/spring-beans.xsd">
  4. </beans>

完整applicationContext.xml如下:

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
  3. http://www.springframework.org/schema/beans/spring-beans.xsd">
  4. <!-- 将指定类配置给Spring,让Spring创建HelloSpring对象的实例 -->
  5. <bean id="helloSpring" class="com.itheima.HelloSpring">
  6. <!--为userName属性赋值-->
  7. <property name="userName" value="Rod Johnson">
  8. </property>
  9. </bean>
  10. </beans>
  11. <!--Beans模块:提供了BeanFactory类,是工厂模式的经典实现,Beans模块的主要作用是创建和管理Bean对象。-->
  12. <!--可作为配置文件模板-->
  13. <!--XML文件包含了很多约束信息-->

5、创建测试类TestHelloSpring

在main()方法中初始化Spring容器并加载applicationContext.xml配置文件,通过Spring容器获取HelloSpring类的helloSpring实例,调用HelloSpring类中的show()方法在控制台输出信息。

  1. package com.itheima;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. class HelloSpringTest {
  5. public static void main(String[] args){
  6. // 初始化spring容器,加载applicationContext.xml配置
  7. ApplicationContext applicationContext=new
  8. ClassPathXmlApplicationContext("applicationContext.xml");
  9. // 通过容器获取配置中helloSpring的实例
  10. HelloSpring helloSpring=
  11. (HelloSpring)applicationContext.getBean("helloSpring");
  12. helloSpring.show();// 调用方法
  13. }
  14. }

6、运行第一个Spring程序

六、总结:

1、学习Spring的中文非官方翻译文档springdoc.cn

2、什么是 pom?

POM 是 Project Object Model 的缩写,即项目对象模型。

pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。

   pom 配置一览表如下所示

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <!-- The Basics -->
  7. <groupId>...</groupId>
  8. <artifactId>...</artifactId>
  9. <version>...</version>
  10. <packaging>...</packaging>
  11. <dependencies>...</dependencies>
  12. <parent>...</parent>
  13. <dependencyManagement>...</dependencyManagement>
  14. <modules>...</modules>
  15. <properties>...</properties>
  16. <!-- Build Settings -->
  17. <build>...</build>
  18. <reporting>...</reporting>
  19. <!-- More Project Information -->
  20. <name>...</name>
  21. <description>...</description>
  22. <url>...</url>
  23. <inceptionYear>...</inceptionYear>
  24. <licenses>...</licenses>
  25. <organization>...</organization>
  26. <developers>...</developers>
  27. <contributors>...</contributors>
  28. <!-- Environment Settings -->
  29. <issueManagement>...</issueManagement>
  30. <ciManagement>...</ciManagement>
  31. <mailingLists>...</mailingLists>
  32. <scm>...</scm>
  33. <prerequisites>...</prerequisites>
  34. <repositories>...</repositories>
  35. <pluginRepositories>...</pluginRepositories>
  36. <distributionManagement>...</distributionManagement>
  37. <profiles>...</profiles>
  38. </project>

其中基本配置为:

  • project - project 是 pom.xml 中描述符的根。
  • modelVersion - modelVersion 指定 pom.xml 符合哪个版本的描述符。maven 2 和 3 只能为 4.0.0。

3、Spring框架的优点:

a.非侵入式设计

  Spring是一种非侵入式(non-invasive)框架,所谓非侵入式是指Spring框架的API不会在业务逻辑上出现,也就是说业务逻辑应该是纯净的,不能出现与业务逻辑无关的代码。由于业务逻辑中没有Spring的API,所以业务逻辑代码也可以从Spring框架快速地移植到其他框架。

b.降低耦合性

 Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大降低了组件之间的耦合性。 

c.支持AOP编程

  Spring提供了对AOP的支持,AOP可以将一些通用的任务进行集中处理,如安全、事务和日志等,以减少通过传统OOP方法带来的代码冗余和繁杂。

d.支持声明式事务

 在Spring中,可以直接通过Spring配置文件管理数据库事务,省去了手动编程的繁琐,提高了开发效率。

e.方便程序的测试

 Spring提供了对Junit的支持,开发人员可以通过Junit直接创建测试类进行单元测试。

f.方便集成框架

Spring提供了一个广阔的基础平台,其内部提供了对各种框架的直接支持,如Struts、Hibernate、MyBatis、Quartz等,这些优秀框架可以与Spring无缝集成。

g.降低Java EE API的使用难度

对Java EE开发中的一些API(如JDBC、JavaMail等)都进行了封装,大大降低了这些API的使用难度。

4、什么是IOC?

Spring是一个容器(容器就是用来容纳某种物品的装置。比如我们生活中常用的水杯,水桶这些都可以看做是容器),是一个IOC容器,那么这里提的IOC是什么呢?
IoC = Inversion of Control 翻译成中⽂是 控制反转 的意思,也就是说 Spring 是⼀个“控制反转”的容器。

5、学Spring的本质

既然 Spring 是⼀个 IoC(控制反转)容器,重点还在“容器”⼆字上,那么它就具备两个最基础的功能:将对象存入到容器,从容器中取出对象,即:学习Spring 最核心的功能就是学如何将对象存入到 Spring 中,再从 Spring 中获取对象的过程。 

6、本文主要是Spring学习入门的笔记所以并不完善,后续将会继续补充

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/87787
推荐阅读
相关标签
  

闽ICP备14008679号