1.框架的好处
框架就是经过长期验证过的半成品软件,高内聚,低耦合!
- 提高开发效率
- 增加代码的重用性
- 提供编写规范
- 节约维护成本
- 解耦底层实现原理
2.Spring体系
2.1 Spring框架
核心容器 |
|
中间层技术 | AOP、Aspects 老生常谈了 |
应用层技术 | 提供数据集成方案、web集成、web应用 |
测试技术 | test 单元测试 |
2.2 Spring优势
- 方便解耦,简化开发
- 可以继承优秀的框架
- 方便程序的测试
- AOP编程的支持
- 申明事务的支持
- 降低JavaEE api的使用难度
- java源码是经典的学习例子
3. SpringIoc的雏形
3.1 spring的入门代码
import com.zx.Service.Userservice;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
public static void main(String[] args) {
/**
* 加载配置文件
*/
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
/**
* 从容器中拿到对应的bean
*/
Userservice mytest = (Userservice) classPathXmlApplicationContext.getBean("mytest");
mytest.test();
}
}
3.2 scope配置作用
<!--scope 属性
singleton 单列模式,在spring创建的时候生成bean 对象
prototype 多例模式,在获取的时候才会创建对象
这个有兴趣可以研究一下源码
-->
<bean id="mytest2" scope="prototype" name="userservice1,userservice2" class="com.zx.Service.Impl.UserserviceImpl"></bean>
3.2 init 和 destory
init 什么时候加载看是单例还是多例,不管是那种方式,都是在创建的时候执行init方法
destory 方法是在关闭的时候,执行,spring容器有对应的关闭方法
classPathXmlApplicationContext.close();
3.3 静态工厂和实例工厂
这边实际上是兼容老代码而做的bean加载
3.4 DI
依赖注入,实际上和IOC是一样的概念,只是角度不同,对于spring容器来说是控制反转,就是你要什么问我拿,这叫控制反转,如果站在应用的角度,就是我要什么问你拿,对我我来说就是依赖注入。
题外话,为了方便理解,半杯水问题,乐观的人看待就是还有半杯水,悲观的人会觉得只有半杯水
3.5 setter注入
3.6 构造器注入(很少用到,知道就行)
3.7 集合注入
3.8 P标签的使用
3.9 SpEL表达式
4.实用配置
去读配置文件的信息
4.1 import 导入子配置文件
<import resource="applicationContext-test.xml"></import>
这边有个注意点就是一个配置文件里面不能出现多个bean 相同的id
多个配置文件里面有相同id的bean 后者覆盖前者
4.2 重要的三个对象
后续读源码可以仔细剖析