广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java Spring框架简介与Spring IOC详解
  • 563
分享到

Java Spring框架简介与Spring IOC详解

2024-04-02 19:04:59 563人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录spring简介和配置1、Spring概述1.1 spring 是什么1.2 Spring发展历程1.3 Spring的优势 (理解)\1. 方便解耦,简化开发\2. aop 编

Spring简介和配置

学习目标

【应用】能够独立完成springIOC的快速入门
【应用】能够掌握spring的bean标签的配置
【应用】能够独立完成bean的对象属性注入
【应用】能够独立完成bean的普通属性注入
【理解】能够独立完成bean的集合属性注入

1、Spring概述

1.1 spring 是什么

在这里插入图片描述

Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。
提供了表现层 springMVC和持久层 Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。

1.2 Spring发展历程

1997 年, IBM提出了EJB 的思想
1998 年,SUN制定开发标准规范 EJB1.0
1999 年,EJB1.1 发布
2001 年,EJB2.0 发布
2003 年,EJB2.1 发布
2006 年,EJB3.0 发布
Rod Johnson 罗宾·约翰逊( Spring 之父)

在这里插入图片描述

Expert One-to-One J2EE Design and Development(2002) 阐述了 J2EE 使用EJB 开发设计的优点及解决方案
Expert One-to-One J2EE Development without EJB(2004) 阐述了 J2EE 开发不使用 EJB的解决方式(Spring 雏
形)
2021 年 7 月份发布了 Spring 的最新版本 Spring 5.3.9 通用版(正式发布的版本)

1.3 Spring的优势 (理解)

\1. 方便解耦,简化开发

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

\2. AOP 编程的支持

通过 Spring的 AOP 功能,方便进行面向切面编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松实现。
如 实现对程序进行权限拦截、运行监控等功能

\3. 声明式事务的支持

可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。

\4. 方便程序的测试

Spring对Junit4支持,可以通过注解方便的测试Spring程序,测试不再是昂贵的操作,而是随手可做的事情。

\5. 方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、mybatis、Quartz等)的直接支持。

\6. 降低 JavaEE API 的使用难度

Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。

\7. Java 源码是经典学习范例

Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java 设计模式灵活运用以及对 Java技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。

1.4 Spring的体系结构(了解)

在这里插入图片描述

2、Spring IoC快速入门

2.1 IoC的概念和作用

IoC:控制反转(Inversion Of Control) ,就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

简单理解:把对象的创建、初始化、销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。

明确 IoC的作用:削减计算机程序的耦合(解除我们代码中的依赖关系)。
原来:我们在获取对象时,都是采用 new 的方式。 是主动的。
现在:我们获取对象时,跟spring容器要,有spring为我们查找或者创建对象。 是被动的。

2.2 Spring IoC程序开发步骤

①导入 Spring 开发的基本包坐标
②编写 Dao 接口和实现类
③创建 Spring 核心配置文件
④在 Spring 配置文件中配置 UserDaoImpl
⑤使用 Spring 的 API 获得 Bean 实例

2.3 导入Spring开发的基本包坐标


<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring‐context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

2.4 编写Dao接口和实现类


package com.summer.dao;
public interface UserDao {
public void save();
} 

package com.summer.dao.impl;
import com.summer.dao.UserDao;
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("用户添加~~~~~");
}
}

2.5 创建Spring核心配置文件

在类路径 classpath 下(resources)创建applicationContext.xml配置文件


<?xml version="1.0" encoding="UTF‐8"?>
<beans xmlns="Http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring‐beans.xsd">
</beans>

2.6 在Spring配置文件中配置UserDaoImpl


<?xml version="1.0" encoding="UTF‐8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring‐beans.xsd">
<!‐‐ 实现IoC将对象的创建 交给spring容器
UserDao userDao = new UserDaoImpl();
‐‐>
<bean id="userDao" class="com.bailiban.dao.impl.UserDaoImpl"></bean>
</beans>

2.7 使用Spring的API获得Bean实例


public class TestIoC{
public static void main(String[] args) {
// 创建spring容器实例
ApplicationContext context = new
ClassPathXmlApplicationContext("applicationContext.xml");
//从容器中获取 bean 根据 唯一标识id获取
UserDao userDao = (UserDao) context.getBean("userDao");
userDao.save();
}
}

在类路径下寻找配置文件来实例化容器
Spring快速入门代码巩固练习
练习下通过springIoC的 XML配置方式来进行对象的实例化
\1. 导入坐标
\2. 创建Bean
\3. 创建配置文件applicationContext.xml
\4. 在配置文件中进行配置
\5. 创建ApplicationContext对象getBean

3、 Bean的依赖注入入门

① 编写Dao,Service接口和实现类


public interface UserDao {
public void save();
} 
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("用户添加~~~~~");
}
} 
public interface UserService {
public void save();
} 
public class UserServiceImpl implements UserService {
public void save() {
//TODO
}
}

②将UserDaoImpl 、 UserServiceImpl 的创建权交给 Spring


<
!‐‐ spring IoC 将对象的创建权交给spring‐‐>
<bean id="userDao" class="com.bailiban.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.bailiban.service.impl.UserServiceImpl"></bean>

UserService 内部再调用 UserDao的save() 方法


public class UserServiceImpl implements UserService {
public void save() {
//创建spring容器实例
ApplicationContext context = new ClassPathXmlApplicationContext();
//根据id获取dao对象
UserDao userDao = (UserDao) context.getBean("userDao");
//调用方法
userDao.save();
}
}

③从 Spring 容器中获得 UserService 进行操作


public class TestDI {
//测试 DI快速入门
@Test
public void test1() {
//创建spring容器实例
ApplicationContext context = new
ClassPathXmlApplicationContext("applicationContext.xml");
//根据id获取dao对象
UserService userService = (UserService) context.getBean("userService");
//调用方法
userService.save();
}
}

3.1 Bean的依赖注入分析

目前UserService实例和UserDao实例都存在与Spring容器中,当前的做法是在容器外部获得UserService实例和UserDao实例,然后在程序中进行结合。

在这里插入图片描述

因为UserService和UserDao都在Spring容器中,而最终程序直接使用的是UserService,所以可以在Spring容器中,将UserDao设置到UserService内部。

在这里插入图片描述

3.2 Bean的依赖注入概念

DI : Dependency Injection 依赖注入 , 需要有 IoC的环境,Spring 创建对象的过程中,Spring 将对象依赖的属性注入到对象。

在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是代码中不可能出现没有依赖的情况。

IoC解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用 Spring 之后,就让 Spring 来维护了。
简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。

3.3 Bean的依赖注入方式

怎么将UserDao怎样注入到UserService内部呢?

set方法

在UserServiceImpl中添加setUserDao方法


public class UserServiceImpl implements UserService {
// 定义dao成员变量
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} 
public void save() {
// //创建spring容器实例
// ApplicationContext context = new
ClassPathXmlApplicationContext("applicationContext.xml");
// //根据id获取dao对象
// UserDao userDao = (UserDao) context.getBean("userDao");
// //调用方法
userDao.save();
}
}

配置Spring容器调用set方法进行注入


<bean id="userDao" class="com.bailiban.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.bailiban.service.impl.UserServiceImpl">
<!‐‐使用set方法注入
name: set方法去掉set后 首字母小写
‐‐>
<property name="userDao" ref="userDao"></property>
</bean>

set方法:P命名空间注入
P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中,如下:
首先,需要引入P命名空间:


xmlns:p="http://www.springframework.org/schema/p"

其次,需要修改注入方式


<bean id="userService" class="com.bailiban.service.impl.UserServiceImpl" p:userDao‐
ref="userDao">

3.4 Bean的依赖注入的数据类型

上面的操作,都是注入的引用Bean,除了对象的引用可以注入,普通数据类型 等都可以在容器中进行注入。
注入数据的二种数据类型
1.普通数据类型
2.引用数据类型
其中引用数据类型,此处就不再赘述了,之前的操作都是对UserDao对象的引用进行注入的,下面将以set方法注入为例,演示普通数据类型的注入。
Bean的依赖注入的数据类型
(1)普通数据类型的注入
练习:


public class UserDaoImpl implements UserDao {
//普通数据类型的注入
private String name;
private int age;
public void setName(String name) {
this.name = name;
} 
public void setAge(int age) {
this.age = age;
} 
public void save() {
System.out.println(name+"‐‐‐"+age);
System.out.println("用户添加~~~~~");
}
} 

<bean id="userDao" class="com.bailiban.dao.impl.UserDaoImpl">
<!‐‐ 普通数据的注入 ‐‐>
<property name="name" value="旺财"></property>
<property name="age" value="18"></property>
</bean>

到此这篇关于Java Spring框架简介与Spring IOC详解的文章就介绍到这了,更多相关Spring IOC 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java Spring框架简介与Spring IOC详解

本文链接: https://www.lsjlt.com/news/136336.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java Spring框架简介与Spring IOC详解
    目录Spring简介和配置1、Spring概述1.1 spring 是什么1.2 Spring发展历程1.3 Spring的优势 (理解)\1. 方便解耦,简化开发\2. AOP 编...
    99+
    2022-11-12
  • Spring框架之IOC介绍讲解
    目录一、对spring的理解二、spring中ioc的特点2.1控制反转2.2注入依赖方式① set注入方式② 构造注入方式③ 自动装配三、spring与web容器的整合一、对spr...
    99+
    2022-11-13
  • Spring JDBC 框架简介
    目录JDBC 框架概述JdbcTemplate 类配置数据源数据访问对象(DAO)执行 SQL 语句执行 DDL 语句Spring JDBC 框架例子JDBC 框架概述 在使用普通的...
    99+
    2022-11-12
  • Java 自定义Spring框架与Spring IoC相关接口分析
    在本讲,我们来对Spring IoC功能相关的接口逐一进行分析,分析这些接口的原因就是为了我们自己定义Spring IoC功能提前做好准备。 Spring IoC相关接口分析 Bea...
    99+
    2022-11-12
  • Java框架---Spring详解
    目录一 技术发展二 框架设计Spring Framework 6大模块三 Spring AOP详解AOP两种方式四 Spring Bean核心原理Bean的加载过程五 Spring ...
    99+
    2022-11-12
  • Spring框架IOC容器底层原理详解
    目录1、什么是IOC2、IOC容器的底层原理3、那么上边提到的三种技术如何实现IOC的呢4、IOC(接口)1、什么是IOC IOC – Inverse of Contro...
    99+
    2022-11-13
  • Spring Boot Rest常用框架注解详情简介
    目录开始Spring Boot Rest的先决条件在Spring Initializer创建Spring Boot项目Spring Boot注解@RestController@Req...
    99+
    2022-11-13
  • Java Spring IOC图文详解
    目录IOC简介耦合与内聚工厂模式发展史IoC入门案例总结IOC简介 IoC:控制反转,即Spring反向控制应用程序所需要的资源(本来在传统模式中,主控权是在类里面的,所以才叫控制反...
    99+
    2022-11-12
  • 如何理解spring框架中的ioc
    这期内容当中小编将会给大家带来有关如何理解spring框架中的ioc,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。摘要: 关于spring框架中的ioc的幽默解释 IoC就是Inversion of Co...
    99+
    2023-06-17
  • Java中Spring框架之IOC如何配置
    这篇文章主要介绍了Java中Spring框架之IOC如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Spring的IOC配置Spring最重要的特性是IOC控制反转,利...
    99+
    2023-06-02
  • Spring超详细讲解IOC与解耦合
    目录前言一.所谓耦合二.Spring三.核心IOC理解1.容器2.控制反转3.依赖注入四.Bean的实例化1.无参构造2.工厂静态方法3.工厂实例方法(常用)五.Bean的依赖注入1...
    99+
    2022-11-13
    Spring IOC Spring 解耦合
  • Spring框架开发IOC两种创建工厂方法详解
    1.IOC有两种创建工厂的方法 IoC 通过工厂模式创建 bean 的方式有两种: 静态工厂方法 实例工厂方法 2.两种方法的不同 2.1静态方法创建 就是直接可以通过静态方法来实例...
    99+
    2022-11-12
  • Spring框架七大模块简单介绍
    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring框架的7个模块组成 Spring框架的每个...
    99+
    2023-05-30
    spring框架 七大模块 简单介绍
  • Java 自定义Spring框架与核心功能详解
    目录Spring核心功能结构核心容器spring-beans和spring-core模块spring-context模块spring-context-support模块spring-...
    99+
    2022-11-12
  • Java Spring 控制反转(IOC)容器详解
    目录什么是容器?无侵入容器IOC控制反转IOC理论推导传统应用程序开发的弊端“注入”机制小结IOC本质DI(依赖注入)总结IoC 容器是 Spring 的核心,也可以称为 Sprin...
    99+
    2022-11-12
  • Spring核心之IOC与bean超详细讲解
    目录前言一、Spring的简介和获取二、依赖注入与IOC1、接口注入2、Setter注入3、构造器注入三、自动装配1、按Bean名称装配2、按bean类型装配四、bean的作用域1、...
    99+
    2022-11-13
    Spring IOC Spring bean
  • Spring IOC 常用注解与使用实例详解
    目录@Component@Autowired@Qualifier@Bean@ImportResource@Profile@PropertySource@Component 注解@co...
    99+
    2022-11-13
  • Spring Boot构建框架详解
    什么Spring Boot?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,...
    99+
    2023-05-30
    spring boot 框架
  • Spring框架中@PostConstruct注解详解
    目录初始化方式一:@PostConstruct注解初始化方式二:实现InitializingBean接口补充:@PostConstruct注释规则总结初始化方式一:@PostCons...
    99+
    2022-11-13
  • Java Spring框架创建项目与Bean的存储与读取详解
    目录1.Spring项目的创建1.1创建Maven项目1.2添加spring依赖1.3创建启动类1.4配置国内源2.储存或读取Bean对象2.1添加spring配置文件2.2创建Be...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作