初学Spring (春天)<1>

一、spring(春天) ----软件界的艺术品

官网:spring.io

1.spring是一个开源框架

2.spring是分层的java EE、一站式轻量级框架。

分层的java EE:
持久层: --mybatis
视图层: -- jsp /servlet
控制层: --servlet
一站式: java EE每层都有解决方案
轻量级:spring无侵入式 (低耦合,高内聚)

 

GA:General Availability,正式发布的版本,官方推荐使用此版本。在国外都是用GA来说明release版本的。

PRE: 预览版,内部测试版. 主要是给开发人员和测试人员测试和找BUG用的,不建议使用;

SNAPSHOT: 快照版,可以稳定使用,且仍在继续改进版本。

二、spring 核心

1)ioc di
2)aop
3)事务管理
4)webFlux --最新的mvc框架

三、IOC inverse Object cotroller 控制反转

(以前我们要自己new对象,现在spring帮我们new对象,以后我们需要对象,就找spring要)

以前:做鞋子--手工作坊      (自己new对象)

1、效率低
2、每个细节都要关注
3、成本高----人力 ,时间


现代:工厂                                   (spring bean工厂---new对象)


1、效率高
2、不需要关注每个细节,机器
3、成本低


ioc:控制反转

1.控制谁?        控制new 对象


2.反转什么?       反转new对象权利(程序员-->spring)


3.谁控制谁的反转?      spring 控制new对象的权利 ,不再由程序员来控制


四、spring 中为什么叫bean工厂而不叫对象工厂?

1)对象 new Object();             好比:女朋友
2)bean 对象-->具有生命周期的----bean    好比:老婆


五、spring bean工厂


1)不使用bean工厂模式
面向对象的六大原则:

  1. 单一职责原则——SRP
  2. 开闭原则——OCP
  3. 里式替换原则——LSP
  4. 依赖倒置原则——DIP
  5. 接口隔离原则——ISP
  6. 迪米特原则——LOD

开闭原则:系统/程序对修改关闭,对扩展开放

2)自己实现工厂----GOF 23设计模式  (单列模式,工厂模式)

1) 自己阅读工厂模式材料学习


2)开闭原则:对修改关闭,对扩展开发

1、简单工厂

1)不符合开闭原则 (反射)

2)要编写很多个工厂类

2、工厂方法模式

3、抽象工厂

3)spring bean工厂   (本质ioc容器)

你想让bean工厂帮你new对象,首先要告诉spring bean工厂需要产生什么对象?


1)导包
https://repo.spring.io/release/org/springframework/spring/

spring-beans-5.0.14.RELEASE.jar 支持bean工厂的包
spring-context-5.0.14.RELEASE.jar 支持context的包
spring-core-5.0.14.RELEASE.jar 支持spring的核心类的包
spring-expression-5.0.14.RELEASE.jar 支持spring表达式的包
spring-test-5.0.14.RELEASE.jar 支持spring单元测试


2)通过配置告诉spring bean工厂生产什么样的bean?

https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#spring-core

方式1:基于xml配置 (今天)

1)BeanFacotry 按需实例化
2) ApplicationContext 容器启动实例化所有的bean

ClassPathXmlApplicationContext

FileSystemXmlApplicationContext

注意:classpath:spring-beans.xml

WebApplicationContext 集成 mvc框架


方式2:基于注解配置
1、xml+注解配置

2、java+注解配置

方式3:基于java的配置
注意:需要再多导入一个包spring-aop-5.0.14.RELEASE.jar
1)AnnotationConfigApplicationContext
@Configuration
@Bean(name="redPig")

【注意】spring bean的底层就是用的反射技术来实例化bean

总结:IOC是一种思想,为了减轻程序员自己new对象工作,实现IOC
方式,第1是自己工厂类(使用工厂模式) 第2是自己使用spring 的bean
工厂。

六、Di dependency Injection 依赖注入 (给属性注入值)

1、set方法注入

2、构造方法注入

1)根据参数名进行注入

 

 

 

2)根据参数下标进行注入

 

 

 

3、注入数组、集合、map 等

4、bean的id和name属性 ,可以同时写getBean根据id获取bean,获取不到根据name来,name获取不到就报错

 

例子:

1)当参数为普通类型时直接可以引用:

在这里插入图片描述
2)当参数为引用类型时:
在这里插入图片描述

3)当参数为数组时:
在这里插入图片描述

4)当参数为集合时:
在这里插入图片描述

5)当参数为map时:
在这里插入图片描述


七、<bean>的属性

id/name bean的唯一标示

id是bean的唯一标示

id和name可以同时写 id是唯一标示 name别名

name也是bean唯一标示

class

建议:一般建议使用id指定bean的唯一标示

posted on 2020-12-14 20:21  茕茕孑立!  阅读(117)  评论(0)    收藏  举报