Spring 学习01 Spring 简介 IOC DI

Spring 的学习

Spring 主要体系 模块

Spring 作为企业级框架为用户提供了多个模块,
主要模块核心容器
spring-core模块 提供了框架的基本组成,包括IOC和依赖注入。
spring-beans模块 提供BeanFactory,工厂模式的实现,移除了编码式单例的需要,并且可以把配置和依赖从实际编码中解耦
context模块以core和beans模块的基础建立,类似于JNDI注册方式访问对象。
JNDI(Java Naming and Directory Interface) 类似从配置文件中读取需要的内容
applicationContext接口是context的核心,和BeanFactory 也是Spring 的核心接口
spring-expression模块提供了强大的表达式语言,支持set和get属性值、属性赋值、方法调用、访问数组集合及索引的内容、逻辑算术运算、命名变量、通过名字从Spring IoC容器检索对象,还支持列表的投影、选择以及聚合等

web数据访问/集成
JDBC 提供JDBC抽象层,ORM ,OXM ,JMS和事务处理模块

Ioc控制反转和DI依赖注入

控制翻转(Inversion of Contro) 就是当需要对象的时候,原来是人为的在类中new 出新对象, 现在是由Spring容器在外部new出对象 在由DI 注入到需要使用的类中, 而现在使用的类中可以私有化 需要的对象.

IOC不是一种技术,而是一种设计思想,就是单纯的由人工控制对象转变为容器控制,
控制了资源(对象、文件等)的获取, 反转了对象被动获得依赖对象。
优势在于 解耦,减少了类与类之间的耦合,注入依赖对象都是使用注解并写在配置文件中。

依赖注入(Dependency Injection)是技术层面上的IOC明确描述,应用程序依赖IOC容器提供对象需要的外部资源,IOC主动注入某个对象需要的外部资源。

p.s. Bean 与 POJO
Bean的规范是 public 类 并有无参数的构造函数, 属性修饰为private 需要有getset方法,实现serializable 接口序列化 , 对于时间要使用Swing 中 处理监听器的方式 ,延伸扩展开 分布式、事务处理、数据存储、安全性等 出现了EJB (Enterprise JavaBean)
POJO 是专指 只有setter/getter/toString 的简单类,包括DO/DTO/BO/VO等。

1.SpringIOC完成步骤

A.需要IOC相关jar包
B.在Spring配置文件中 配置对象说明
C.创建Spring 容器对象 (BeanFactory 与ApplicationContext)

其中ApplicationContext 是BeanFactory的子类 ,但BeanFactory和配置文件相互关联 需要FileSystemResource加载文件路径

String config = "D:\\applicationContext.xml"
Resource resource = new FileSystemResource(config);
BeanFactory bean = new XmlBeanFactory(resource);

路径只写配置文件名时候 会自动从类加载路径加载,也可以像这样写本地磁盘地址,但写本地地址时,当项目发布就需要其他工具完成。 所以推荐直接写文件名,并把文件放在类加载路径下

2.Spring容器 创建对象

Spring容器创建对象有三种方式,
一、构造器方法实例

<bean id=" 标识" class="包名.类名"> </bean>

默认调用类型对应的 无参构造

二、静态工厂方法实例

<bean id = "标识" class="包名.类名" factory-method="方法名" >
</bean>

本质上是类型调用对应的静态方法去获取对象
三、实例工厂方法实例

<bean id="标识符" factory-method="实例方法名" factory-bean=" 工厂对象的标识ID"

本质上是利用一个以存在的对象,来创造另一个类型的对象 。工厂生产对象,工厂已经存在

由Spring创建的容器默认都是单例的,作为 ?作用域? 修改bean标记中的 scope属性能修改作用域 ,默认为singleton 修改为prototype则为非单例


对象的销毁和初始化
在beans 和bean中都有 初始化和销毁属性,但beans中影响范围较大 所以一般用在bean标签中

default-init-method //对象初始化
default-destory-method //对象销毁

DI(Dependence Injection) 依赖注入

把一个组件的值设置给另一个组件的过程叫依赖注入
就是当你需要对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值