静下心来、学习!
IOC:控制反转(DI:依赖注入)
1、搭建Spring环境
下载jar
spring-framework-4.3.9.RELEASE-dist.zip
开发spring至少需要使用的jar(5+1)
spring-aop.jar 开发aop特性时需要的jar
spring-beans.jar 处理Bean <bean>
spring-context.jar 处理spring上下文 <context>
spring-core.jar spring核心jar
spring-expresseion.jar spring表达式 EL/jstl
三方提供的日志jar
commons-logging.jar 日志
2、编写配置文件
为了编写时有一些提示、自动生成一些配置信息:
方式一:
可以给eclipse增加支持spring的插件:spring tool suite(https://spring.io/tools3/sts/all) 下载springsource-tool-suite-3.9.6.RELEASE-e4.8.0-updatesite.zip(匹配eclipse版本),然后在eclipse中安装。
方式二:
直接下载sts工具(相当于一个集成了spring tool suite 的eclipse) http://spring.io/tools3/sts/
新建:bean configuration - complicationContext.xml
3、开发spring程序(IOC)
//spring上下文对象
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//直接从sprigioc容器获取一个id为‘指定对象’的对象
Student student=(Student)context.getBean("student");
Spring IOC容器:创建new对象、给对象的属性赋值
SpringIOC发展史:
1.new
new非常零散,造成后期维护较为麻烦。
2.简单工厂
3.ioc
SpringIOC容器(超级工厂) ————可以存放任何对象
IOC:控制反转
反转的是:获取对象的方式
为了更加清晰理解IOC,ioc在一次大会上更名为DI(依赖注入)
IOC(控制反转)也称为DI(依赖注入):
控制反转:将 创建对象、属性值 的方式进行了翻转,从new、setXxx()翻转为了从springIOC容器getBean().
依赖注入:将属性值 注入给了属性,将属性 注入给了bean,将bean 注入给了ioc容器;
【社会主义】
总结:Ioc/DI,无论要什么对象,都可以直接去SpringIOC容器中获取,而不需要自己操作。
因此之后的ioc分为2步: 1、先给Springioc中存放对象并赋值
2、拿
DI:依赖注入
IOC容器赋值:如果是简单类型(8个基本+String),value;
如果是对象类型,ref="需要引用的id值",因此实现了 对象与对象之间的依赖关系
context.getBean(需要获取的bean的id值)
依赖注入3种方式:
1、set方式的依赖注入:
赋值,默认使用的是 set方法();
依赖注入底层是头盖骨反射实现的。
2、构造器注入:通过构造方式赋值
<constructor-arg value="ls" type="String" index="1" name="name></constructor-arg>
需要注意:如果<constructor-arg>的顺序与构造方法参数的顺序不一致,则需要通过type或者index或者name指定。
3、p命名空间注入
引入p命名空间
xmlns:p="http://www.springframework.org/schema/p"
<bean id="teacher" class="org.wyl.entity.Teacher" p:age="24" p:name="ww">
简单类型: p:属性名=“属性值”
引用类型(除了String外): p:属性名-ref="引用的id"
注意:多个 p赋值的时候要有空格。
注意: 无论是String还是int、short、long,在赋值时都说 value=“值”,因此建议 此种情况 需要配合 name\type进行区分