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

点个赞,证明你还爱我

相关文章
|
8天前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
24 0
|
18天前
|
缓存 Java Spring
Spring 框架中 Bean 的生命周期
Spring 框架中 Bean 的生命周期
29 1
|
1月前
|
开发框架 安全 Java
Spring 框架:企业级应用开发的强大工具
在当今数字化时代,企业级应用开发的需求日益增长。为了满足这一需求,开发者们需要一款功能强大、易于使用的开发框架。Spring 框架作为 Java 领域的领先者,为企业级应用开发提供了全面的解决方案。本文将深入探讨 Spring 框架的各个方面,包括其历史、核心模块、优势以及应用场景。
23 0
|
1月前
|
存储 Java 数据库
|
1月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
3月前
|
XML Java 数据库连接
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
67 0
|
3月前
|
Dubbo Java 应用服务中间件
微服务框架(十六)Spring Boot及Dubbo zipkin 链路追踪组件埋点
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文第一部分为调用链、OpenTracing、Zipkin和Jeager的简述;第二部分为Spring Boot及Dubbo zipkin 链路追踪组件埋点
|
2月前
|
缓存 安全 Java
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
|
3月前
|
Java 数据库连接 Maven
SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美结合!
SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美结合!
|
1月前
|
Java 数据库连接 API
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
47 0