一文带你了解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

点个赞,证明你还爱我

相关文章
|
11天前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
24天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
36 4
|
26天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
130 1
|
21天前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
31 0
|
15天前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
37 1
Spring 框架:Java 开发者的春天
|
8天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
21 2
|
7天前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
53 1
|
15天前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
1月前
|
NoSQL Java Redis
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
这篇文章介绍了Redis的基本命令,并展示了如何使用Netty框架直接与Redis服务器进行通信,包括设置Netty客户端、编写处理程序以及初始化Channel的完整示例代码。
38 1
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
|
21天前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。