第一部分:Spring架构的分析。 两个核心概念:IoC、AOP。 IoC:实际上依靠工厂模式,实现控制反转。
步骤:读取配置文件,利用Java反射机制,生成对象,将对象返回给调用者。
了解两个类:BeanFactory和ApplictionContext
Spring源码结构的解读:用Ant生成Spring相关包,文档等。 CVS下载Spring源码。安装Spring。
Ioc详解: Bean的生命周期:定义、初始化、使用、销毁。 Bean的初始化。
通过AutoWrite、dependency-check、Setter方法、setBeabFactory、 通过配置初始化前、后方法等。
Bean创建的方式有:单例创建,原型创建。Spring只能管理单例创建的Bean。
propertyConfigurer、ProertyOverrideConfiger 配置其它需要加入到Spring里的文件。
初始化spring的方法:ClassPathXmlApplicationContext
BeanFactoryAware与BeanNameAware ApplicationContextAware Spring属性编辑器。事件监听器。
BeanFactory提供管理和操作Bean的功能。
ApplictionContext继承了BeanFactory类,所以提供比BeanFactory更强大的功能。 在整合Web项目时候,ctx可以自动初始化。可以通过ContextLoaderListener或ContextLoaderServlet实现自 动加载。
AOP详解: 核心关注点,横切关注点,建议,切入点,织入。OOP编程与AOP编程。提供系统级的服务。与具体业务关系不大。 常用于系统级服务,比如:日志、事务、权限等。
使用AOP编程的步骤:先抽象出横切面,即次要业务,再用一个建议者(advice)管理横面, 定义需要使用横切功能的点(pointcut),把切面织入(weave)进去。方式有前,后,中等。
<tx:advice id="txAdvice" transaction-manager="reportTransactionManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txOperation" expression="@annotation(org.springframework.transaction.annotation.Transactional)" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txOperation"/>
</aop:config>
Spring架构模块:AOP、IOC、ORM、DAO、Spring Web、Spring上下文、Spring MVC
第二部分:Spring应用开发。
1.JNDI(Java Naming and Directory Interface):java命名目录服务。
一般用于数据源配置。 使用JNDI常用的三个类:AbstractJndiLocator JndiObjectFactoryBean JndiObjectTargetSource 建议直接使用JndiObjectFactoryBean这种形式,它是用于产品部署场合。而JndiObjectTargetSource用于产品 开发场合。 JndiTemplate类,用于改造操作。方便使用。
2.JTA(Java Transaction API):Java事务API. platformTransactionManager:Spring的事务管理中,这是最基本的接口。
已经实现上面接口的常用事务管理器:JDBC事务、JTA事务、Hibernate事务、JDO事务、OJB事务、JMS事务。
TransactionDefinition:事务的属性定义。 7种事务移植策略[事务的传播属性]: PROPAGATION_REQUIRED(如果已在事务中,则使用原来的,否则新开一个事务) PROPAGATION_SUPPORTS(如有事务,则以事务的形式运行,如没有事务,则以非事务的形式运行) PROPAGATION_MANDATORY(必须在一个事务中运行) PROPAGATION_REQUIRES_NEW(在新事务中运行,即每次启动一个事务) PROPAGATION_NOT_SUPPORTED(不能运行在事务中,如果有事务,则客户事务挂起) PROPAGATION_NEVER(不能运行在事务中,否则抛异常) PROPAGATION_NESTED(支持嵌套式事务) TransactionTemplate事务模板的使用。[在编程式事务管理里,可以使用]
3.JMS(Java Message Service):Java消息服务。
JmsTemplate的使用:配置相关的xml,主要有目的地的配置 template的配置 JmsTemplate与MessageCreator结合使用,完成消息的发送工作。 详细了解消息的发送与接收原理。Bean转换功能的实现。
4.JavaMail:Java邮件服务。 MailSender接口的两个实现类:CosMailSenderImpl、JavaMailSenderImpl CosMailSenderImpl用于一般邮件的发送,在配置文件里配置CosMailSenderImpl和SimpleMailMessage 信息。 JavaMailSenderImpl用于发送复杂的邮件,配置JavaMailSenderImpl 用MimeMessagePreparator的回调方法,实现邮件发送。
5.EJB(Enterprise JavaBean):企业级Bean。Spring对无状态会话Bean有很好的支持。 几种Bean 无状态、有状态、JMSBean(消息驱动Bean)等。主要了解Spring对AbstractStatelessSessionBean的支持。
6.持久化服务:DAO ORM JDBC 了解JdbcDaoSupport HibernateDaoSupport JdoDaoSupport的使用。它们都继承了DaoSupport。 具体的使用一般是用它们的模板类:JdbcTemplate/HibernateTemplate/JdoTemplate类进行数据操作。 以JdbcTemplate的使用为例子,说明其应用的基本思路: 1.配置数据源,把数据关联到JdbcTemplate上,只需关联一次,即可满足所有的要使用的JdbcTemplate。 [扩展知识点:Spring配置数据源的方式 dbcp BoneCP c3p0] 2.JDBC事务的管理:DataSourceTransactionManager 3.Spring与Hibernate的集成。了解关系型数据与JavaBean对象的映射。
7.任务调度服务:Queatz Timer Spring集成了上面两种定义任务调度服务。 一个是开源社区里的项目,一个是Java2版本里提供的任务调度器。 Queatz与Spring集成要了解的几个常用类:QueatzJobBean JobDetailBean SimpleTriggerBean等。 重点看MethodInvokingJobDetailFactoryBean Timer与上面的那个类似。它是Java本来就带有的类。不用重新学习新的一套类库。 基本使用:Spring通过配置文件,定义任务执行的时间点与周期,我们只需要开要执行的任务类即可。
8.远程服务:支持RMI、Hessian、Burlap、HTTP Invoker、Web服务(JAX-RPC)、企业Bean。 补充知识点:远程服务调用,参数的传递,通常参数类序列化,以便能在客户端与服务器端进行交互。 RMI(Remote Method Invocation):JDK本身提供的用于支持分布式开发的技术。在网络受限制的情况不适用。 Hession与Burlap:由于上述的技术,服务器端与客户端都要用Java语言编写,并且它们之间不能有防火墙, 正是这些原因,出现了这两种技术。要用到第三方的序列化机制。 HTTP Invoker:集合了上面三种技术的优点。JDK本身提供的序列化机制。支持在网络受限的情况使用。
第三部分:Spring高级应用。
1.视图技术集成:Struts、Spring MVC、Tapestry、JSF等。 Spring MVC DispatherServlet前端控制器,用于请求分发。 处理流程: DispatherServlet接收http请求,分发给相应用Control,Control转换请求信息,处理请求, 返回ModelAndView 解释 返回到视图。
Tapestry与Spring集成:Tapestry是基于组件、事件的OO编写Web视图层的框架。 几个概念:Visit Engine HttpSession Page和组件模板。。 Tapestry由三部分组成:HTML模板,页面规范文件,Java文件。
JSF(JavaServer Faces):基于Web前端标准而开发的一个框架。
2.Spring安全框架:Acegi 与事务管理一样,都是声明式管理,原理相同,都是抽象出切面单独进行开发。
原文来自:http://www.cnblogs.com/lils/p/3723480.html