【spring】【spring-ioc】

1 SpringFramework

spring

rod johnson

the source of modern java

2 IOC

Inverse of control

UserService userService = new UserServiceImpl(); //应用程序生成的实例 → 控制

控制:实例的生成权

反转:原先是应用程序 → 反转给Spring容器(IOC容器)

容器:生成并管理实例的地方

3 DI

ioc的基础上

Spring容器和应用程序 →

谁富有,谁贫穷 → 劫富济贫

Dependency Injection:依赖注入

依赖:谁依赖谁,为什么

注入:谁注入谁,注入了什么

他能够提供什么样的功能

l 方便解耦,简化开发(高内聚低耦合)

l AOP编程的支持

l 声明式 事务的支持

l 方便程序的测试

l 方便集成各种优秀框架

l 降低JavaEE API的使用难度

依赖注入、事件、资源、i18n国际化、校验、数据绑定、类型转换、Spring Expression Language、AOP

4 入门案例1

开始使用Spring容器,生成并管理实例

4.1 引入spring依赖

5

spring-core

*s**pring-context***

spring-bean

spring-aop

spring-expression

1

jcl

4.2 创建spring容器 →spring配置文件

xml格式 → schema

配置文件的名称:application**(-xxx).xml

1、 复制已有schema

2、 spring官网

3、 文件模板

4.3 配置文件中管理实例

userServiceImpl的实例交给spring容器

组件:Spring容器管理的实例

注册:管理

 

4.4 从容器中取出userService组件,并测试sayHello方法

4.5 取出容器中组件的不同方式

 

5 入门案例2

维护容器中的组件之间的关系

5.1 通过property标签建立组件之间的依赖关系

name属性对应set方法

5.2 单元测试

从容器中取出的userService中的userMapper和直接从容器中取出的userMapper是同一个组件

6 接口

容器接口

6.1 BeanFactory

6.2 ApplicationContext

ClasspathXmlApplicationContext

FileSystemXmlApplicationContext

AnnotationConfigApplicationContext

WebApplicationContext

7 bean的实例化

控制反转:实例的生成权交给了spring容器

7.1 构造方法

7.1.1 无参构造(最常用)

默认使用的方式就是无参构造

7.1.2 有参构造

7.2 工厂

工厂中的生产方法是否为静态方法

 

7.2.1 静态工厂

7.2.2 实例工厂

需要先提供一个工厂组件

 

7.2.3 FactoryBean

BeanFactory和FactoryBean之间的区别

BeanFactory:生产全部组件

XXXFactoryBean 生产特定的xxx组件的

FactoryBean接口中提供了一个方法 getObject(注册的组件类型和该方法的返回值相关)

8 作用域scope(默认不写是singleton)

singleton:组件在容器中以单例的形式存在

prototype: 原型,每一次获得组件的时候都去获得一个新的

9 生命周期

容器中的组件的生命周期:我们要去使用组件,要经过哪一些过程

9.1 cope对生命周期的影响

scope会影响组件到达可用状态之前的这些生命周期的执行(*影响执行开始的时间*)

singleton:容器初始化的时候(调用getBean方法之间已经执行完了)

prototype:当调用getBean(获得组件时),才开始执行生命周期

9.2 完整流程图

9.3 代码

9.3.1 给组件提供生命周期

9.3.2 自定义BeanPostProcessor

10 注解(重中之重)

10.1 组件注册功能注解

bean标签 → class属性

注解:类上

@Component

10.1.1 组件id

10.1.2 其他注解

@Service :service层的组件

@Repository:dao层的组件

@Controller:controller层的组件(SpringMVC阶段才去使用)

10.2 组件注入

@Autowired:按照类型来进行注入

@Autowired + @Qualifier

@Resource

要求在容器中的组件里使用这些注入功能的注解

10.3 生命周期和scope

init-method:@PostConstruct

destroy-method:@PreDestroy

将注解写在方法上

@Scope :将作用域的值写在注解中

10.4 Spring单元测试

测试容器中的组件提供的方法

 

可以在单元测试类中使用注入功能的注解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值