spring

一.什么是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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值