DI:依赖注入:
一、Spring 是分层的java SE/EE 应用full-stack 轻量级开源框架
分层:3层(4层),web层,service层,(manager层,事务控制层),dao层(持久层)
full-stack :全栈,简化开发
轻量级:是以API的使用情况
开源:源代码开放
核心:
IOC:控制反转
AOP:面向切面编程
二、spring的优势
1.简化开发,方便解耦,IOC(控制反转)功能,将原来的强耦合转为低耦合,
耦合:具有两面性,一方面紧密的耦合的代码难以测试,难以复用,难以理解,并且典型地表现为打地鼠式的bug特性(修复一个bug,将会出现一个或者更多的新bug),另一方面,一定程度的耦合又是必须的----完全没有的耦合的代码,什么都做不了,为了完全具有实际意义的功能,不同的类必须以适当的方式进行交互,所以,耦合是必须的,但应当被小心谨慎的管理,(使用IOC容器,可以从IOC的核心xml中依赖中查看依存关系)
2.AOP编程支持(基于动态代理模式)
3.声明式事务支持(基于动态代理模式)
4.集成Junit ,方便程序的测试
5.方便集成其他的各种优秀框架
6.降低JavaEE API的使用难度
7.源码开放
三、spring 体系结构
Ⅰ、Test 测试
Ⅱ、Core container 核心容器:Beans (对象工厂),Core (核心,IOC业务),Context(构置整个上下文文件,依赖文件), Spel(spring 表达式语言)
Ⅲ、AOP:面向切面核心
Aspects:
Instrumentation
Messaging
Ⅳ、Data Access/Integration:JDBC,ORM,OXM,JMS,Transaction(事务)
Web:WebSocket,Servlet,Web,Portlet
四、Spring开发步骤
1.导入Spring依赖(配置maven依赖的基本包坐标)
2.编写基本接口和其实现类
3.配置Xml配置文件:id标识=com.itheima.dao.UserDaoImpl (只能是具体类,不可以是接口)
4.在使用Spring的API获得Beans 对象(使用Spring客户端,读取XML配置文件,根据id标识获取Bean全限定名,通过反射创建Bean对象,返回对象);(API:ApplicationContext app=new ClassPathXmlApplicationContext("Spring客户端"))
五、Spring配置文件
Ⅰ、bean 标签配置:
id 唯一标识,Bean 实例在Spring 容器中的唯一标识(不可重复):
class Bean的全限定名称(包名+类名):
scope 作用范围:=singleton:默认值,单列的,即通过容器获得的对象是同一个,在容器创建时创建对象,为非懒加载(即时加载)(lazy-init=“false”)但是可以配置为懒加载,节约资源,只要容器存在,就一直存在,当容器被卸载的时候,对象被销毁
protoype:多列的,即通过容器获取的对象不是同一个,当容器创建后使用getBean方法获取对象时创建对象,获取一次就创建一个对象,只要使用就一直存在,只有长时间不使用,会被java垃圾回收器回收
lazy-init 指定是否是懒加载:=false或true,
init-method 指定初始化方法:=方法名(对象先创建完成之后,才会去执行初始化方法)
destory-method 指定销毁方法:=方法名
Ⅱ、Bean实例化三种方式
无参构造方法实例化:<bean id="" class=""></bean>
工厂静态方法实例化:<bean id="" class="" factory-method="方法名"></bean> ,没有创建对象,直接调用类的静态方法
工厂实例方法实例化:<bean id="a" class="" ></bean>
<bean id="" factory-bean="a" factory-method="方法名"/>
|
|