一.什么是spring
掌握用法:
深入理解:
不断实践:
反复总结:
再次深入理解与实践:
1.spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用
2.是一个轻量级的控制反转(Ioc)和面向切面(AOP)的容器框架
从大小与开销两方面而言,spring都是轻量的
通过控制反转(Ioc)技术达到松耦合的目的
提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
包含并管理应用对象的配置和生命周期,这个意义上是一种容器
将简单的组件配置、组合成为复杂的应用,这个意义上是框架
3.框架的特点
半成品
封装了特定的处理流程和控制逻辑
成熟的、不断升级的
框架与类库的区别
框架一般是封装了逻辑、高内聚的,类库则是松散的工具组合
框架庄竹宇某一领域,类库则是更通用的
4.为什么使用框架
软件系统日趋复杂
重用度高,开发效率和质量提高
软件设计人员专注于对领域的了解,使需求分析更充分
易于上手,快速解决问题
二.IOC
1接口及面向接口编程
用于沟通中介物的抽象化
实体把自己提供给外界的抽象化说明
对应java接口即声明,声明了哪些方法对外是公开提供的
在java8中,接口可以拥有方法体
2. Ioc:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护
DI:依赖注入:是其一种实现方式
目的:创建对象并且组装对象之间的关系
获得依赖对象的过程被反转了
3.基础:
两个包
org.springframework.beans
org.springframework.context
BeanFactory提供配置结构和基本功能,加载并初始化bean
ApplicationContext保存了bean对象并在spring中被广泛使用
4.方式,ApplicationContext
本地文件
Classpath
Web应用中依赖servlet或Listener
文件:FileSystemXmlApplicationContext context = new
FileSystemXmlApplicationContext("F://workspace/application.xml");
Classpath:ClassPath
XmlApplicationContext context = new
ClassPath
XmlApplicationContext("F://workspace/application.xml");
web应用
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</
load-on-startup
>
</servlet>
三.spring装配
1.初始化:
方法1.实现org.springframework.beans.foctory.InitializingBean接口,覆盖afterPropertiesSet方法。系统会自动查找afterPropertiesSet方法,执行其中的初始化操作
方法2.配置init-method
例如设置bean中init-method="init"那么在初始化过程中就会调用相应class指定类的init()方法进行初始化工作
2 销毁(与初始化类似)
方法1.实现org.springframework.beans.foctory.DisposableBean接口,覆盖destory方法。
方法2.配置destory-method
3配置全局初始化、销毁方法(属于默认配置,参考截图)
注意:
当三种方式同时使用时,全局(默认的)初始化销毁方法会被覆盖。
另外实现接口的初始化/销毁方式会先于配置文件中的初始化/销毁方式执行。
即使没有以上三种初始化方法也是可以编译执行的
4xxxxAware接口 Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后可以获取相应资源 .通过Aware接口,可以对Spring相应资源进行操作(一定要慎重) ApplicationContextAware和BeanNameAware接口 首选要配置bean标签 实现了ApplicationContextAware接口得到的ApplicationContext对象是一个容器,获取的bean的实例对象与IOC容器得到的是一样的; 实现了BeanNameAware接口可以获取到当前类对应的bean标签中配置的id属性值
5自动装配
资源文件
四.spring装配2
Bean 的定义及作用域注解 A、@Controller :注解控制器类(控制层 MVC) B、@Service :注解服务类(服务层) C、@Repository :注解 DAO 类(持久层) D、@Component :将普通的 bean 注解到 spring 容器中,相当于配置文件中的<bean id="xxx" class="xxx"/> 元注解(Meta-annotations) 元注解即是许多 Spring 提供的注解可以作为自己的代码,元注解是一个简单的注解,可以应用到另一个注解 除了 value() 元注解还可以有其他的属性,允许定制 类的自动监测及 Bean 的注册 Spring 可以自动检测类并注册 Bean 到 Applicationcontext 中 <context:annotation-config /> 通过基于 xml 的 Spring 配置 为了能够自动检测到这些类并注册相应的 Bean ,需要 <context:component-scan base-package="xxx" /> <context:component-scan> 包含 <context:annotation-config>,通常使用前者后,就不需要再使用后者 使用过滤器进行自定义扫描 A、默认情况下,类被自动发现并注册 bean 的条件:使用 @Component @Repository @Service @controller 注解或者使用 @Component 的自定义注解 B、可以通过过滤器修改默认注解的行为 C、还可以使用 use-default-filters = "false" 禁用自动发现与注册
五.spring注入
1.spring注入是指在启动spring容器加载bean配置的时候,完成对变量的赋值行为常用的两种注入方式设值注入构造注入设值注入:<bean id="injectionService" class="...InjectionServiceImpl"><property name = "injectionDAO" ref = "injectionDAO"/></bean><bean id = "injectionDAO" class = "....InjectionDAOImpl"></bean>