spring:一种轻量级的J2EE框架
1.SpringIoc 容器
2.SpringAOP
3.Spring整合Hibernate
4.Spring整合Struts
5.Spring整合Mybatis
6SpringMVC
Spring 就是粘合剂,Spring可以通过Ioc整合各种框架和技术,简化开发
IOC:控制反转(Inversion of Control,英文缩写为IoC)是框架的重要特征,并非面向对象编程的专用术语。它与依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)并没有关系。
什么控制权反转?
对象创建的控制权反转到程序的外部
打印机:
两个接口:
Ink 墨盒接口 colorInk BlackInk
Paper 纸张接口A4 B5
一个类:
Printer
面向接口编程:也就是设计编码,只关心接口对外提供的方法,不关心接口具体的实现,在具体创建该对象的时候再指定实现类.
DI: 依赖注入Dependency Injection 依赖谁注入谁
依赖注入的实现方法
set注入和构造注入
DI和IoC的关系
ioc通过DI来实现的,一般情况下我们把IOC~~(约等于)DI
IOC不再new DI传值
SpringIoC:
1.导入IoC基本包
2.建立applicationContext.xml new 对象,注入对象
引入dtd
\spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\bean
springIoC容器:把创建对象的控制权转移到Spring中,
Spring就是一个bean工厂(造对象的工厂),代码中减少了直接new的对象的过程,是一种彻底的IoC,减少了硬编码(编译)通常情况下,都应该避免使用硬编码方法。,降低了耦合度,减低了维护成本.
核心业务对象都交给spring创建管理
Dao service Controller 交给spring 其他的自己写
SpringIoC容器, SpringBean工厂:(javaBean 对象)
核心业务对象都交由Spring创建管理,核心业务对象都存在springIoC容器中.
SpringDI:
1.set注入:
<property></property>
条件:必须有set方法,而起name=set方法名(把set去掉,一般首字母小写) 不是属性名
注意:
自定义的引用类型不能使用value注入,使用ref
基本类型,包括String等,使用value
2.构造注入
1.<bean></bean>默认使用无参构造实例化对象
2.通过有参构造给属性注入值:构造注入
<constructor-arg></constructor-arg> 参数 构造方法有几个参数就写几个
注意:在一个spring配置文件中不能有重名的id或者name
spring通过工厂方法实例化对象
创建工厂 (静态工厂和实例化工厂)
StaticFactory静态工厂(方法是static)
<bean factory-method="工厂方法名">
实例工厂中的方法都是public 不加static (加上就报错)
实例化工厂(InstanceFactory)实用前需要先创建工厂
配置文件中 :ns:namespace 命名空间 命名空间加多个 每个都是单独的 可以用双引号
schemaLocation 就一个 ( 就是写在一个双引号中 属于一个) (直接加url) p和c无需在schemaLocation添加url ,别的命名空间需要添加url p是property 的简写 c是construct(构造) 的简写
一个bean对应一个java对象id(就是类型名) class对应的是 路径
bean不指定时用无参构造 所以 写构造方法是尽量把无参写出来
一个entry 表示一个键值对
map的k都是string类型,自定义引用类型
对数组进行注入还是使用list标签