一文带你了解Spring框架的基本使用

简介: Spring作为企业Java最流行的应用程序开发框架,已经被数以百万计的世界各地的开发人员使用,Spring框架用来创建高性能,易于测试的,可重用的代码。是一个开源的Java平台,它最初...

 image.gif

image.gif

Spring作为企业Java最流行的应用程序开发框架,已经被数以百万计的世界各地的开发人员使用,Spring框架用来创建高性能,易于测试的,可重用的代码。是一个开源的Java平台,它最初是由Rod Johnson编写并在2003年6月在Apache2.0许可下首次发布。由于是轻量级的,当涉及到大小和透明度。spring框架的基本版本是大约2MB。核心功能可以在任何Java应用程序中使用,但也有扩展的Java EE平台上构建Web应用程序。Spring框架的目标,以使J2EE开发更容易使用,并且通过使基于POJO的编程模型,促进良好的编程习惯。本文将带你了解Spring框架的基本使用,方便在工作中更好的了解其原理。

1:Spring在开发中的作用是什么? 

Spring的主要作用是整合第三方的框架、为Service层提供事务

2:传统的MVC的开发模式

    M:Model  (pojo+Service+DAO)

    V:View    (jsp、HTML)

    C:Controll  (Servlet、SpringMVC、struts)

   在传统的开发中:我们在Servlet中需要调用Service、在Service中需要调用DAO

   我们可以间接性的认为  Servlet---->Service----->DAO

   在我们的开发中Service的创建、DAO的创建、是由程序员直接或者间接性的完成了对象的创建工作

   我们的对象创建是由程序员去完成的?依赖关系是由程序员去管理的?

   我们的对象的创建能不能交给第三方去完成呢?我们的依赖关系能不能由第三方去进行维护呢?

   Spring的出现正好解决了这个问题.......

3:Spring是什么?

    Spring就是有关管理对象的创建以及管理对象之间的依赖关系的这样一门技术

    也就是说使用了Spring之后 我们的对象的创建可以由Spring来完成、对象之间的依赖关系也可以由Spring来进行维护  

 

4:Spring能干什么?

     4.1:Spring管理对象之间的依赖关系

     4.2:为Service层提供事务

     4.3:整合第三方框架

     4.4:提供了DAO层的解决方案

     4.5:提供了控制器的解决方案

     4.6:提供了对Web的支持

     4.7:提供了对上下文的支持

5:Spring的家族产品有哪些

    Spring     SpringMVC    Spring Security   Spring data   Spring Boot    Spring Cloud

6:Spring中的七大模块

    Spring Core:这个模块是Spring的核心模块  主要功能就是IOC/DI  提供的就是Spring的核心容器 IOC

    Spring AOP:这个模块的主要功能是提供了面向切面编程

    Spring ORM:这个包的主要功能是 提供了 整合第三方ORM框架的包

    Spring Web:这个包的主要功能就是 提供了对Web的支持

    Spring WebMVC:SpringMVC  (SpringMVC不是一个框架是Spring中的一个模块而已)

    SpringDAO:这个模块的主要功能就是 提供了对数据库的访问

    Spring Context:认证、邮件、EJB、UI

7:Spring的第一个HelloWorld程序

7.1:导包

  主要导入的是Spring的核心功能包 Spring Core

7.2:编写实体类

image.gif

7.3:编写配置文件

image.gif

7.4:测试

image.gif

8:Spring中的IOC的使用(配置文件)

8.1:无参数的对象的创建的配置文件的编写

image.gif

8.2:有参数的对象的创建

image.gif

 8.3:配置文件的玩法

image.gif

8.4:工厂类的创建

image.gif

8.5:工厂中非静态的方法创建JAVA对象

image.gif

8.6:工厂中静态方法创建JAVA对象

网络异常,图片无法展示
|
image.gif

总结下:IOC

  IOC:控制反转

  谁控制了谁?

   Spring的IOC容器控制了对象的创建

   什么东西反转了?

   以前我们需要自己创建JAVA对象  现在 创建对象的这个权利反转了、创建对象的这个权利交给了Spring去完成

9:Spring中的DI

  DI:依赖注入

  谁依赖于谁?

   Controll依赖于Service   Service依赖于DAO

  注入了什么东西?

   1:注入具体的对象     2:注入了实际的值

9.1:set注入(可能是以前用的最多的一种方式)

9.1.1:在需要注入对象的类里面添加set方法

网络异常,图片无法展示
|
image.gif

9.1.2:编写配置文件

image.gif

9.2:P标签注入

前提:在约束中必须有:xmlns:p="http://www.springframework.org/schema/p"

         9.2.1:必须在需要注入对象的地方编写set方法

image.gif

9.2.2:在配置文件中进行注入

image.gif

9.3:内部bean进行注入

    9.3.1:在类中申明set方法

image.gif

9.3.2:编写配置文件

image.gif

9.4:自动装配

  9.4.1:全局实现自动装配

image.gif

   9.4.2:局部实现自动装配

image.gif

注意:如果是通过类型来实现自动装配的话那么注入的对象在IOC的容器中,必须只有一个实例、如果有多个实例的话那么就造成了 不知道注入那个对象了(报错)、通过名字进行装配的时候 那么只要对象的名字一致那么就不会报错了、不管是哪种注入方式那么set方法都是必须要写的

10:获取对象的三种形式

10.1:通过类型来获取

image.gif

10.2:通过名字来获取

网络异常,图片无法展示
|
image.gif

10.3:通过id来获取

image.gif

11:通过注解的形式来玩下IOC和DI

要记住如下的注解

@Component:这个表示的是将当前的类的实例化对象放到IOC容器里面

@Service :语义化的Component一般用于Service上面 意义跟上面是一样的

@Repository:语义化的Component一般用于DAO上面  意义跟上面一样

@Scope:这个用来设置当前的这个类是单例的还是多例的

@PostConstruct:这个表示的意思是:当前类对象放到IOC容器的时候执行的初始化方法

@PreDestroy:这个表示的是对象在IOC容器中销毁的时候要执行的方法(资源回收)

@Autowired:这个表示的是根据类型(type)实现自动注入

@Resource:这个表示的是通过名字进行注入

注意:在类上面使用 @Component、@Service、@Repository的时候 默认的对象的名字就是当前的类的名字的首字母小写  

@Component、@Service、@Repository三个注解的意义是一样的、在实际开发中 Service层一般使用@Service、DAO层一般使用@Repository、如果其他的对象我们需要让IOC容器来实现自动管理的话那么 一般情况下使用@Component

如果在开发中实在记不住注解 你可以都使用@Component来实现对象放入IOC容器 并让Spring来实现管理

 

12:AOP的使用

 AOP:面向切面的编程

 什么叫面向切面的编程?就是将软件开发的过程中 遇到的重复代码抽取出来形成一个专门的类 这个类就叫做切面类,在软件的正常的运行过程中 需要使用我们抽取出来的重复代码的时候 通过代理的设计模式 动态的植入我们的重复代码的这种编程的思想 就叫做面向切面编程

  AOP编程的最大的用处:做风险控制、用户的行为记录、用户的行为日志 一般在做的时候是做成表

   系统的运行日志:这个日志一般是吸入到我们的文件中

12.1:传统模式的使用

12.1.1:编写我们的DAO类

image.gif

12.1.2:编写业务逻辑类

image.gif

12.1.3:编写切面类

image.gif

12.1.4:测试

12.2:使用的是cglib代理来实现aop的使用

12.2.1:编写UserDAO的类(同上)

12.2.2:编写UserService的类

image.gif

12.2.3:编写代理类(UserServiceProxy)

image.gif

12.2.4:测试

image.gif

12.3:AOP中注解模式的使用

常见的注解:

@Component          //第一步:将AOP类放入到IOC容器

@Aspect             //表明当前的类是一个切面类

@Scope(value="singleton")   //切面类一般在类中都是单例的

@Pointcut(value="execution (* com.qf.aop1.UserService.*(..))")          //这个里面编写的表达式就称为 切入点表达式

@Around(value="pt()")       //环绕的意思  在方法执行的前后来进行执行

@AfterReturning(value="pt()")    //在方法执行完成之后执行

@AfterThrowing(value="pt()")    //方法出现异常的时候执行

@Before(value="pt()")        //在切入点表达式的位置的方法执行之前执行的代码  后面的value表示的是在某一个地方去执行这个方法

@After(value = "pt()")        //方法执行之后进行执行

12.3.1:AOP配置文件的使用

image.gif

12.4:AOP的配置模式的使用

  12.4.1:将所有的注释给弄掉

  12.4.2:编写配置文件

image.gif

  12.4.3:测试(同上)

13:Spring中DAO模块的使用(JdbcTemplate的使用)

Spring中的这个DAO模块的主要功能是:就是提供了数据库的功能访问、类似于dbutils

只不过是Spring这个框架提供的一种访问数据库的功能而已(基本不用)

13.1:导包

    C3P0的包

    mysql的驱动包

    Spring的核心功能包

    Spring的DAO的包

13.2:编写配置文件

image.gif

13.3:在DAO中使用jdbcTemplate完成数据库的操作

image.gif

13.4:测试(同上)

14:  事务

14.1:通过配置的方式来实现事务

image.gif

测试:详情见代码(注意:你可以通过设置异常来看 事务是否起作用)

14.2:通过注解的模式来实现事务

14.2.1:配置文件的编写

image.gif

14.2.2:在Service中配置事务的使用

image.gif

14.2.3:测试的使用

image.gif

 

15:注意事项

    15.1:生产环境中事务是不能加在DAO层的、所有的事务处理都是加在Service层的、因为一个业务是否成功 才表示了当前的操作是否是成功的

    15.2:如果开发中事务不回滚  那么你就手动的抛出一个运行时异常 这样事务就会回滚了

image.gif


image.gif

点个赞,证明你还爱我

相关文章
|
24天前
|
XML 安全 Java
|
27天前
|
缓存 NoSQL Java
什么是缓存?如何在 Spring Boot 中使用缓存框架
什么是缓存?如何在 Spring Boot 中使用缓存框架
41 0
|
1月前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
60 4
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
186 1
|
2月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
48 0
|
2天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
10天前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
27 5
|
20天前
|
缓存 Java 数据库连接
Spring框架中的事件机制:深入理解与实践
Spring框架是一个广泛使用的Java企业级应用框架,提供了依赖注入、面向切面编程(AOP)、事务管理、Web应用程序开发等一系列功能。在Spring框架中,事件机制是一种重要的通信方式,它允许不同组件之间进行松耦合的通信,提高了应用程序的可维护性和可扩展性。本文将深入探讨Spring框架中的事件机制,包括不同类型的事件、底层原理、应用实践以及优缺点。
49 8
|
1月前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
53 6