diff --git a/java/spring/1.spring基础.md b/java/spring/1.spring基础.md
new file mode 100644
index 0000000..d86c3a5
--- /dev/null
+++ b/java/spring/1.spring基础.md
@@ -0,0 +1,181 @@
+---
+id: "2018-10-20-10-38-05"
+date: "2018/10/20 10:38:05"
+title: "spring基础"
+tags: ["java", "spring"]
+categories:
+- "java"
+- "spring学习"
+---
+
+ spring 是为了解决企业级应用开发的复杂性而创建的,spring 最根本的使命是:简化 Java 开发。为降低开发复杂性有以下四种关键策略。
+
+- 基于 POJO 的轻量级和最小侵入性编程
+- 通过依赖注入和面向接口实现松耦合
+- 基于切面和惯例进行声明式编程
+- 通过切面和模板减少样板式代码
+
+#### 1.依赖注入
+
+ 假设类 A 依赖类 B,通常做法是在类 A 中声明类 B,然后使用,这样一方面具有极高的耦合性,将类 A 与类 B 绑定在一起;另一方面也让单元测试变得很困难,无法在 A 外部获得 B 的执行情况。
+
+ 通过依赖注入,对象的依赖管理将不用对象本身来管理,将由一个第三方组件在创建对象时设定,依赖关系将被自动注入到对应的对象中去。
+
+#### 2.创建应用上下文
+
+- `ClassPathXmlApplicationContext()`从类路径创建
+- `FileSystemXmlApplicationContext()`读取文件系统下的 xml 配置
+- `XmlWebApplicationContext()` 读取 web 应用下的 XML 配置文件并装载上下文定义
+
+#### 3.声明 Bean
+
+
+
+1. 最简单
+
+ ``
+
+2. 带构造器
+
+ ```xml
+
+ //基本数据类型使用value
+ //对象使用ref
+
+ ```
+
+3. 通过工厂方法创建
+
+ 如果想声明的 Bean 没有一个公开的构造函数,通过 factory-method 属性来装配工厂生产的 Bean
+
+ ```xml
+ //getInstance为获取实例的静态方法。
+ ```
+
+#### 4.Bean 的作用域
+
+ 所有 Spring Bean 默认都是单例的。通过配置 scope 属性为 prototype 可每次请求产生一个新的实例。
+
+```xml
+
+```
+
+scope 可选值:
+
+- `singleton`:每个容器中,一个 Bean 对象只有一个实例。(**默认**)
+- `prototype`:允许实例化任意次 ,每次请求都会创建新的
+- `request`:作用域为一次 http 请求
+- `session`:作用域为一个 http session 会话
+- `global-session`:作用域为一个全局 http session,仅在 Protlet 上下文中有效
+
+#### 5.初始化和销毁 Bean
+
+ 当实例化需要执行初始化操作,或者销毁时需要执行清理工作。两种实现方式:
+
+1. xml 配置,类中编写初始化方法和销毁方法,在 bean 中定义。
+
+ ```xml
+
+ ```
+
+ 也可在 Beans 中定义默认初始化和销毁方法。
+
+ ```xml
+
+ ```
+
+2. 实现`InitializingBean`和`DisposableBean`接口
+
+#### 6.setter 注入
+
+ 在 bean 中使用``元素配置属性,使用方法类似于``
+
+```xml
+ //注入基本数据类型
+ //注入类
+```
+
+可使用 p 简写,**-ref**后缀说明装配的是一个引用
+
+```xml
+
+```
+
+#### 7.注入内部 Bean
+
+ 既定义其他 Bean 内部的 Bean,避免共享问题,可在属性节点或者构造器参数节点上使用。
+
+```xml
+
+ //没有id属性,因为不会被其他bean使用
+
+
+
+
+```
+
+#### 8.装配集合
+
+| 集合元素 | 用途 |
+| --------- | -------------------------------- |
+| \ | 装配 list 类型,允许重复 |
+| \ | set,不能重复 |
+| \