首页 > 编程语言 >JavaWeb项目实战三(Spring快速入门IOC)

JavaWeb项目实战三(Spring快速入门IOC)

时间:2022-11-28 13:32:56浏览次数:74  
标签:容器 JavaWeb 对象 Spring 创建 IoC 反转 IOC


JavaWeb项目实战三(Spring快速入门IOC)_开发语言

Spring

介绍

官网:​​https://spring.io​

目前版本:​​Spring web 5.3.19 maven​​​,​​仓库地址​

Spring 是一个支持快速开发 Java EE 应用程序的框架,简化了 Java web 开发操作

Spring Framework主要包括几个模块:

  • 支持 IoC 和 AOP 的容器;
  • 支持 JDBC 和 ORM 的数据访问模块;
  • 支持声明式事务的模块;
  • 支持基于 Servlet 的 MVC 开发;
  • 支持基于 Reactive 的 Web 开发;
  • 以及集成 JMS、JavaMail、JMX、缓存等其他模块

优点

  1. 免费开源、轻量、非入侵
  2. 控制反转(IOC),面向切面编程(AOP)
  3. 支持事务处理,对框架整合的支持、

组成

JavaWeb项目实战三(Spring快速入门IOC)_web安全_02

扩展

JavaWeb项目实战三(Spring快速入门IOC)_java_03

Spring Boot

  • 快速开发脚手架
  • 基于 SpringBoot 可以快速开发单个微服务
  • 和 Maven 一致:约定大于配置

Spring Cloud

  • SpringCloud 基于 SpringBoot 实现

SpringBoot 现在公司用的比较多,学习 SpringBoot 的前提是学习 SpringMVC

IOC

​​Spring:IOC本质分析探究​​,​​IoC原理​

在 IoC 模式下,控制权发生了反转,即从应用程序转移到了IoC容器,所有组件不再由应用程序自己创建和配置,而是由 IoC 容器负责,这样,应用程序只需要直接使用已经创建好并且配置好的组件

控制反转 IoC(Inversion of Control),是一种设计思想,DI (依赖注入)是实现 IoC 的一种方法,也有人认为 DI 只是 IoC 的另一种说法。没有 IoC 的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了

Spring 的核心就是提供了一个 IoC 容器,它可以管理所有轻量级的 JavaBean 组件,提供的底层服务包括组件的生命周期管理、配置和组装服务、AOP 支持,以及建立在 AOP 基础上的声明式事务服务等

Demo

接下来我们使用 XML 方式配置 Bean,采用 XML 方式配置 Bean 的时候,Bean 的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean 的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的

控制反转是一种通过描述(XML 或注解)并通过第三方去生产或获取特定对象的方式。在 Spring 中实现控制反转的是 IoC 容器,其实现方法是依赖注入(Dependency Injection,DI)

  1. 创建 Maven 项目
  2. 导入 Spring 相关 jar 包
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.19</version>
</dependency>
  1. 编写一个 Hello 实体类
  2. 编写 spring 文件 , 这里命名为 beans.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">

<!--bean就是java对象 , 由Spring创建和管理-->
<bean id="hello" class="com.ocean.pojo.Hello">
<property name="str" value="Spring"/>
</bean>
</beans>

注:ref 引用 Spring 容器中创建好的对象,value 引用具体的值

  1. 编写实现类
public class MyTest {
public static void main(String[] args) {
// 获取Spring的上下文对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
// 因为对象都在Spring中管理了,所以要使用的话直接取出来即可
Hello hello = (Hello) applicationContext.getBean("hello");
System.out.println(hello.toString());
}
}

再去看 pojo 对象可以发现有特殊的标记

JavaWeb项目实战三(Spring快速入门IOC)_spring_04

Spring 容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从 Ioc 容器中取出需要的对象

这个过程就叫控制反转 :

控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用 Spring 后 , 对象是由 Spring 来创建的

反转 : 程序本身不创建对象 , 而变成被动的接收对象

依赖注入 : 就是利用 set 方法来进行注入的,可以看到 set 方法前边有特殊标记

IOC 是一种编程思想 , 由主动的编程变成被动的接收

到了现在 , 我们彻底不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的 IoC,一句话搞定 : 对象由 Spring 来创建 , 管理 , 装配 !

创建 IOC 对象

  1. 默认使用无参构造方法创建对象
  2. 有参构造创建对象的方法
  1. 下标赋值
<bean id="user" class="com.ocean.pojo.Hello">
<constructor-arg index="0" value="Ocean"/>
</bean>
  1. 通过类型
<bean id="user" class="com.ocean.pojo.Hello">
<constructor-arg type="java.lang.String" value="ocean" />
</bean>
  1. 通过参数名
<bean id="user" class="com.ocean.pojo.Hello">
<constructor-arg name="str" value="ocean" />
</bean>

在配置文件加载的时候,容器中管理的对象已经初始化了

配置

别名

<alias name="user" alias="test"/>

添加了别名,也可以使用别名获取到这个对象

Bean 的配置

<bean id="user" class="com.ocean.pojo.Hello" name="hello,hell2;hello3">
<property name="str" value="ocean"/>
</bean>

也可以 name 中配置别名

import

一般用于团队开发,可以将多个配置导入使用

<import resource="beans.xml"/>

依赖注入

  1. 构造器注入,之前已经介绍过了
  2. set 方式注入(重点)
    依赖:bean 对象的创建依赖于容器
    注入:bean 对象中的所有属性,有容器来注入
    新建数据对象

补充 setter 和 getter 方法

JavaWeb项目实战三(Spring快速入门IOC)_web安全_05

<!--第一种,普通值注入,value-->
<property name="name" value="ocean"/>
<!--第二种,Bean注入,ref-->
<property name="address" ref="address"/>

参考

JavaWeb项目实战三(Spring快速入门IOC)_开发语言_06


标签:容器,JavaWeb,对象,Spring,创建,IoC,反转,IOC
From: https://blog.51cto.com/u_15878568/5891027

相关文章

  • JavaWeb-JDBC
    JavaWeb-JDBC1,JDBC概述1.1JDBC概念JDBC就是使用Java语言操作关系型数据库的一套API全称:(JavaDataBaseConnectivity)Java数据库连接1.2JDBC本质官方......
  • java中ioc和aop是什么?【杭州多测师】【杭州多测师_王sir】
    一、什么是IOC?1、IoC (Inversion of control )就是控制反转/反转控制。它是一种思想不是一个技术实现。主要就是用来解决创建和管理对象的2、就是不需要通过new 关键字......
  • 观察者模式在spring中的应用
    作者:王子源1观察者模式简介1.1定义指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订......
  • Spring Boot异常处理
    SpringBoot异常处理一、SpringBoot默认的异常处理SpringBoot提供了一个默认处理异常的映射。在SpringBoot的Web项目中,尝试访问一个不存在的URL,会得到SpringBoot中......
  • JavaWeb-MySql高级
    JavaWeb-MySql高级1,约束1.1概念约束是作用于表中列上的规则,用于限制加入表的数据例如:我们可以给id列加约束,让其值不能重复,不能为null值。约束的存在保证了数据......
  • 20221128 源码理解 spring-boot-starter-web【归档】
    版本信息<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>版本2.6.7目录Ser......
  • 20220615 Servlet 相关的 Spring Boot 自动配置类
    自动配置类Servlet相关的匹配的自动配置类:org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfigurationorg.springframework.boot.autoc......
  • 20220704 Spring 相关
    @Configuration(proxyBeanMethods=false)的作用默认proxyBeanMethods=true,会为配置类生成CGLIB代理类。注意,不是为定义的@Bean生成代理类。如果在@Bean方法......
  • Spring Scheduled 三种定时方式
    SpringSchedule配置时间的三种方式fixRate:间隔时间,会根据首次执行时间预先安排固定的时间,错过立即执行fixDelay:间隔时间,上次结束时间后多少间隔后执行cron:指定......
  • springCloud将http请求网关更改为https请求
    如果需要将http请求换成https请求,大致需要三步。第一步:生成证书。网上有很多通过阿里云生成证书的教程。也有通过JDK生成证书。在jdk目录打开命令窗口,执行一下命令:keytoo......