spring学习一

Spring

https://spring.io/

学习文档查找
project - Spring Framework - learn - reference Doc.

project

Spring Framework

releases

GA 通用稳定

学习
API

maven仓库

Spring Web MVC

1.1简介

Spring框架是由于软件开发的复杂性而创建的。

Spring历史

2002年,Rod Johnson创建,首次推出了Spring框架的雏形:interface21框架
2004年3月24号,发布了1.0正式版
“轮子理论”,也即“不要重复发明轮子”。

Spring理念

使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架。
SSH: Struct2 + Spring + Hibernate

SSM: SpringMVC + Spring + MyBatis

官网:官网地址

官方下载地址(github):github

中文文档:link

maven项目导包:
spring web mvc
spring-jdbc

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.7</version>>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.7</version>>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.8.RELEASE</version>>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.8.RELEASE</version>>
            <scope>compile</scope>
        </dependency>
    </dependencies>

Spring优点

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

Spring弊端

配置十分繁琐,“配置地狱”

总结

Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架

Spring组成

7大模块
在这里插入图片描述

拓展

现代化的java开发,说白了就是Spring的开发

构建一切 Spring Boot build Anything
协调一切 Spring cloud coordinate Anything
连接一切 Spring cloud Data Flow Connect Everything

Spring Boot

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

Spring CLoud

SpringCloud是基于SpringBoot实现的

IOC理论推导

private UserDao userDao = new UserDaoImp(); //固定对象

改进,使用一个Set接口实现,已经发生了革命性的变化

private UserDao userDao;
//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}

之前,程序的控制权在程序员手上
使用了set注入后,程序不再具有主动性,而是变成了被动的接受对象

这个思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了,系统的耦合性大大降低,可以更加专注在业务的实现上,这就是IOC的原型。
在这里插入图片描述

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

IoC是Spring框架的核心内容,使用多种方式完美的实现IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实> 现IoC。
Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从IoC容器中取出需要的
对象。

在这里插入图片描述

采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式,在Spring中实现控制反转的是IoC容器,其实现方式是依赖注入(Dependency Injection,DI)。

HelloSpring

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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
        
</beans>

test.java

 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserServiceImp userService = (UserServiceImp)context.getBean("userService");
        userService.getUser();

Hello对象是谁创建的?

hello对象是由Spring创建的
Hello对象的属性是怎样设置的?
是由Spring容器设置的
这个过程叫做控制反转
控制
谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。
反转
程序本身不创建对象,而变成被动的接受对象。
依赖注入
就是利用set方法进行注入的
IoC是一种编程思想,有主动的编程变成被动的接收
IoC:对象由容器创建、管理和配置。
标签:Spring

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值