Spring的ioc初识

1. Spring介绍

1.1 简介

1.1.1概括:

的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。、

1.1.2发展过程

●2002, 首次推出了Spring框架的雏形: interface21框架!
●Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。
●Rod Johnson,Spring Framework创始人, 著名作者。很难想象Rod Johnson的学历, 真的让好多人大吃一惊,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。

1.1.3 Spring 理念
使现有的技术更加容易使用,本身是-个大杂烩,整合了现有的技术框架!

1.1.4 常用框架
●SSH : Struct2 + Spring + Hibernate
●SSM: SpringMvc + Spring + Mybatis!

1.1.5 下载地址

  • 官网: https://spring.io/projects/spring-framework#overview
  • 官方下载地址: htp://repo.spring.io/release/org/springframework/spring
  • GitHub: htps:/github.com/spring:projects/spring.framework
<!-- https ://mvnrepository. com/artifact/org. springframework/spring-webmvc -->
<dependency>
	<groupId>org. springframework</groupId>
	<artifactId>spring-webmvc </artifactId>
	<version>5. 2|. 0.RELEASE</version>
</dependency>
 <!-- https://mvnrepository. com/artifact/org. springframework/spring-webmvc -->
<dependency>
	<groupId>org. springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>5.2.0. RELEASE</version>
</ dependency>

1.2 优点

  • Spring是一 个开源的免费的框架(容器) !
  • Spring是一 一个轻量级的、非入侵式的框架!
  • 控制反转(I0C) ,面向切面编程(AOP) !
  • 支持事务的处理,对框架整合的支持!

总结一句话: Spring就是-一个轻量级的控制反转(IoC) 和面向切面编程的框架!

1.3 组成

1.3.1 Spring 的七大模块

在这里插入图片描述

详解 :

核心容器(Spring Code)

概念

1.是Spring的核心容器,提供了Spring框架的基本功能;

2.此模块包含的BeanFactory类是Spring的核心类,负责产生和管理Bean,是工程模式的实现;

3.采用Factory(工厂模式)实现了IOC(控制反转)将应用的配置和依赖性规范与实际的应用程序代码分开;

4.Spring以bean的方式组织和管理Java应用中发各个组件及其关系。

应用上下文(Spring Context)

概念

1.是一个配置文件,向Spring框架提供上下文信息;

2.SpringContext模块继承BeanFactory类,添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能;

3.还提供了框架式的Bean的访问方式和企业级的功能,如JNDI访问,支持EJB、远程调用、继承模板框架、Email和定时任务调度等;

面向切面编程(Spring AOP)

概念

1.Spring AOP直接将面向方面的编程功能集成到了Spring框架中,所以很容易的使Spring框架管理的任何对象支持AOP(Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化);

2.Spring AOP为基于Spring的应用程序中的对象提供了事务管理服务;

3.通过使用Spring AOP,不用依赖EJB组件,就可以将声明性事务管集成到应用程序中。

JDBC和DAO模块(Spring DAO)

概念

1.DAO(DataAccessObject)模式思想是将业务逻辑代码与数据库交互代码分离,降低两者耦合;

2.通过DAO模式可以使结构变得更为清晰,代码更为简;

3.DAO模块中的JDBC的抽象层,提供了有意义的异常层次结构,用该结构来管理异常处理,和不同数据库供应商所抛出的错误信息;

4.异常层次结构简化了数据库厂商的异常错误(不再从SQLException继承大批代码),极大的降低了需要编写的代码数量,并且提供了对声明式事务和编程式事务的支持;

对象实体映射(Spring ORM)

概念:

1.SpringORM模块提供了对现有ORM框架的支持;
提供了ORM对象的关系工具,其中包括了Hibernate、JDO和 IBatis SQL Map等,所有的这些都遵从Spring的通用事务和DAO异常层次结构;

2.注意这里Spring是提供各类的接口(support),目前比较流行的下层数据库封闭映射框架,如ibatis,Hibernate等;

Web模块(Spring Web)

概念:

1.此模块建立在SpringContext基础之上,提供了Servlet监听器的Context和Web应用的上下文;

2.对现有的Web框架,如JSF、Tapestry、Structs等提供了集成;

3.SpringWeb模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

MVC模块(Spring Web MVC)

概念

1.SpringWebMVC模块建立在Spring核心功能之上,拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离;

2.通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI;

3.MVC模型:

3.1 Servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能;

3.2 业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View;

3.3 而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式

1.3.2 Sprinp理解扩展

在这里插入图片描述

  • Spring Boot
    。一个快速开发的脚手架。
    。基于SpringBoot可以快速的开发单个微服务。
    。约定大于配置!

  • Spring Cloud
    。SpringCloud 是基于SpringBoot实现的。

2.IoC理论

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

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

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

2.1使用spring创建对象

bean.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 id="hello" class="com.zzp.pojo.hello">
    <property name="str" value="hello"></property>
</bean>


</beans>

hello类

package com.zzp.pojo;

public class hello {
    private String str;

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    @Override
    public String toString() {
        return "hello{" +
                "str='" + str + '\'' +
                '}';
    }
}

mytest

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Mytest {
    public static void main(String[] args) {
        //获取spring的上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        //我们的对象现在都在spring中管理了,我们要使用,直接去里面取出来
        Object hello = context.getBean("hello");
        System.out.println(hello.toString());
    }
}

结果:

hello{str='hello'}
2.1.1 控制翻转

上面的过程就是控制翻转

  • 控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的.
  • 反转:程序本身不创建对象,而变成被动的接收对象.
  • 依赖注入:就是利用set方法来进行注入的.
  • IOC是一-种编程思想,由主动的编程变成被动的接收.可以通过newClassPathXmlApplicationContext去浏览一下底层源码。.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值