Spring入门小知识

  • Post author:
  • Post category:其他



一 Spring概念


1 优点

1.1 一站式(full-stack)轻量级的开源框架

轻量级:可以更合理的分配资源,使用最合适最小的资源完成当前需求

一站式:可以对dao、service、web层都提供支持

1.2 两大核心功能:

a. IOC (Inverse Of Control)

把创建对象的权利交给Spring,以被动接受的方式获取对象的思想

步骤一:通过读取配置文件来反射创建对象

步骤二:将所有创建的对象存到Map中,方便使用时获取

这个Map称为容器,也可以用List来代替,但是Map更方便查找

避免了 new ,实现了程序间解耦,提高运行效率,减小服务器压力

b. AOP (Aspect Oriented Programming)

1.3 能够整合各种第三方框架

1.4 解耦,简化开发,避免硬编码,将对象间的依赖关系交由Spring进行控制。

什么叫解耦?

编译时不依赖,运行时依赖。

解决方法:

第一种: 利用反射

第二种: 提供配置文件,用工厂来生产对象

1.5 AOP编程

1.6 声明式事务

2 BeanFactory 和 ApplicationContext 的区别

2.1 BeanFactory 是 Spring 容器中的顶层接口且对象只在使用的时候才会创建

2.2 ApplicationContext

是BeanFactory的子接口只要一读取配置文件,默认创建对象。

其实现类:

a. ClassPathXmlApplicationContext

从类的根路径下架在配置文件(通常使用)

b. FileSystemXmlApplicationContext

从磁盘路径上加载配置文件,文件可以在磁盘任意位置

c. AnnotationConfigApplicaionContext

使用注解配置容器对象时,用该类创建Spring容器。读取注解

3 bean 标签

3.1 作用

提供配置给spring创建对象,默认调用类中的无参构造。

3.2 属性

id : 对象在容器中的唯一标识

class : 类的全限定类名,用来反射创建对象

scope : 对象的作用范围

·     singleton 默认值,单例

作用范围:

一个应用只有一个对象的实例,作用范围时整个引用

生命周期:

对象出生—应用加载,创建容器时

对象生存—容器在就一直存活

对象销毁—应用卸载,销毁容器时

·    prototype 多例

作用范围:

每次访问对象时,都会重新创建对象实例

生命周期:

对象出生—使用对象时

对象生存—只要对象在使用就一直存活

对象销毁—对象长时间不使用时,被GC回收

·factory-method 指定生产对象的方法

· request web项目,将spring创建的对象存入request中

`session web项目,将spring创建的对象存入session中

`·global session web项目,在Portlet环境中应用,如没有,相当于session

·init-method 指定类中的初始化方法名称

·destrory-method 指定累中销毁方法名称

3.3 bean 实例化的三种方式

1) 默认使用无参构造

2)spring管理静态工厂

3)spring管理实例工厂

4 依赖注入(DI Dependency Injection)

4.1 概念

A is B : A 实现了 B 或者 A 继承了 B ,即 A 就是 B

A has B : A 的对象中有一个私有属性B , 就是A 依赖 B

依赖注入就是给对象中的属性赋值。常用的方式由set注入和构造方法注入。

4.2 set方法注入

如果是自己写的类,或者简单属性可以直接赋值,但是如果属性是框架中的,

就无法直接赋值,只能通过自己或者spring调用set方法来赋值。

spring 中使用<bean>下的<property name=””  value=””> 来为属性赋值

4.3 构造方法注入

spring 中使用<bean>下的<constructor-arg name=””  value=””> 来为属性赋值,

类中需要提供一个对相应参数的构造函数

4.4 P名称命名空间注入

本质调用set方法,基本不用

4.5 注入集合属性

String[] arg :

<property name=”…”>

<array>

<value>…</value>

</array>

</property>

Set<?>

<property name=”…”>

<set>

<value>…</value>

</set>

</property>

List<?>

<property name=”…”>

<list>

<value>…</value>

</list>

</property>

Map<?,?>

<property name=”…”>

<map>

<entry key=”…” value=”…”></entry >

<entry key=”…” >…</entry >

</map>

</property>

Properties

<property name=”…”>

<props>

<prop key=”…”>…</prop>

</props>

</property>



版权声明:本文为qq_33417486原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。