Spring学习笔记

第一部分: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 >     

  <tx:attributes>        

    <tx:method name="*" rollback-for="Exception"/>     

  </tx:attributes>  

</tx:advice>  

<aop:config>   

  <aop:pointcut />     

   <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 与事务管理一样,都是声明式管理,原理相同,都是抽象出切面单独进行开发。     

如何有时间可以继续深入学习的知识:Spring安全框架、Tapestry/JSF前端框架、JavaMail的使用。 这些都是对特定领域的知识拓展,可以了解下。