Spring

1.spring 框架

1.1 简介

框架(Framework):一系列的jar包,同时约定了实现某个功能的编程方式,可能与原有的编程方式并不相同!每个框架都解决了某些特定的问题!

  • Spring框架解决的问题:解决了创建和管理对象的问题,实现了解耦
    • 解耦:解除对象的之间的耦合!即降低对象之间的依赖关系!
    • 依赖:在一个对象的工作过程中,需要使用到另一个对象,则称之为依赖另一个对象!
 //原始创建对象方式:user具体的实现类发生改变,new的方式也得改变,耦合性太高
  User user = new UserImpl();

//spring方式:
@Autowared
User user;
  • 如果只是使用Spring框架的内容,添加spring-context依赖即可,并不需要spring-webmvc,在SpringMVC框架,在spring-webmvc中包含了spring-context,所以,也可以直接使用spring-webmvc依赖。
1.2 特性
1.2.1. 什么是IoC

Spring IoC表示控制反转,即在传统模式下,是由程序员编写代码创建并管理对象,例如User user = new User();,当使用Spring框架之后,则将对象的创建、管理的“权力”交给了框架,则表示控制权是给了框架,所以,称之为控制反转!

Spring框架是通过DI(做法、手段)实现了IoC(效果、目标),DI(Dependency Injection)表示依赖注入

1.2.2 什么是依赖注入
  • 在对象的运行过程中,需要使用另一个对象,在编写代码时,在一个类中需要声明另一个类的对象,则表现出了依赖关系!
  • 使用Spring框架,不仅可以管理某个类的对象,还可以在创建对象的同时,为该类中声明的属性进行赋值,这种赋值操作就称之为注入
  • 可以通过set和构造方法赋值
1.2.3 什么是AOP

1.AOP:面向切面编程,是面向对象编程的重要组成部分.在不改变业务逻辑的基础上,对 横切逻辑 进行扩展.

2.应用场景:

性能测试
权限管理
日志管理
事务管理

1.3 对象生命周期

1.3.1 Java Bean

类的定义,符合如下规则的Java对象称为Java Bean

  1. 必须有包
  2. 必须有无参数构造器
  3. 必须实现 序列化接口
  4. 有getXXX setXXX 方法声明的"Bean属性".
    • Bean属性 不是 对象属性
    • boolean类型的 get属性方法,可以声明为 isXXX

Java Bean就是符合一定规范的Java对象!

1.3.2 Bean 的生命周期管理

Spring 中的Bean对象, 由Spring控制对象的创建和销毁, 这个过程称为Spring中Bean对象的生命周期管理.

  1. 单例对象 singleton(单例)

    • 创建: 在Spring容器初始化时候, 创建单例对象, 如果设置了init-method属性, 则在创建对象以后调用初始化方法.
    • 使用: 每次调用getBean时候, 返回的都是同一个对象
    • 销毁: 在Spring容器关闭时候,Spring会自动销毁单例对象, 如果指定了destroy-method属性, 则会在销毁之前执行 销毁 方法.
  2. 多例对象 prototype(原型)

    • 创建: 在调用getBean方法时候, 创建对象, 如果设置了init-method属性, 则在创建对象以后调用初始化方法.
    • 使用: 每次调用getBean时候, 返回的都是新对象
    • 销毁: Spring 不管!!! 也不会调用 destroy-method !!!
1.3.3 Bean 生命周期与延迟实例化

问题:

单例对象默认情况下在容器启动时立即初始化, 如果这些对象内存耗用高, 则启动会很慢.

解决办法:

对于内存占用高, 使用少的对象, 可以设置延迟(懒惰,按需)实例化,
在bean标签上使用懒惰属性设置即可.

设置了懒惰属性为true:

  1. 容器启动时候, bean不实例化
  2. 在第一个次getBean时候实例化
  3. 是单例bean对象.

多例对象没有延迟初始化问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值