Spring笔记1

1.  IOC控制反转:应用本身不负责依赖对象的创建及维护,依赖对象的创建和维护是由外部容器负责的。这样控制权就有应用转移到了外部容器,控制权的转移就是所谓的反转。

2.  依赖注入(Dependency Injection):在运行期,由外部容器动态的将依赖对象注入到组件中。

3.  为何要使用Spring:

    1)降低组件之间的耦合度,实现软件各层的解耦。Controller->Service->Dao

    2)可以使用容器提供的众多服务,如:事务管理服务、消息服务等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不再需要处理复杂的事务传播。

    3)容器提供单例模式支持,开发人员不再需要自己编写代码实现。

    4)容器提供了面向切面(AOP)技术,利用它很容易实现如权限拦截、运行期监控等功能。

    5)容器提供的众多辅助类,利用这些类能够加快应用程序的开发。如Jdbc Template、Hibernate Template

    6)Spring对于主流的应用框架提供了集成支持,如Hibernate,JPS,Struts

4.  轻量级框架与重量级框架:划分一个应用是轻量级还是重量级,主要看它使用了多少服务,使用的服务越多,容器要为普通java对象所做的工作就越多,必然会影响到应用的发布时间和运行性能。对于Spring容器来说,他提供了很多服务,但是这些服务不是为应用程序默认打开的,应用需要哪种服务还需要指明使用该服务,如果应用使用的服务很少,就可以认为此时应用属于轻量级的。如果使用了Spring使用的大部分服务,这时就认为应用属于重量级的。

5.  使用Spring需要的jar:

    1)dist\spring.jar

    2)lib\jakarta-commons\commons-logging.jar

    3)如果使用了切面编程(AOP)还需要:lib\aspectj\aspectjrt.jar和aspectjweaver.jar,lib\cglib\cglib-nodep-2.1_3.jar

    4)如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件

      lib\j2ee\common-annotations.jar

6.  Spring的配置文件模板,在docs\reference\html_single\index.html中搜“<beans>”就可以找到:  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

</beans>

7.  实例化Spring容器常用的两种方法:

    1)在类路径下寻找配置文件来实例化容器

ApplicationContext ctr = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});

    2)在文件系统路径下寻找配置文件来实例化容器

ApplicationContext ctr = new FileSystemXmlApplicationContext(new String[]{"d:\\beans.xml"})

8.  由于Spring的schema信息位于网络上,如果机器不能连接到网络,那么在编写配置信息时就无法出现提示信息,解决方法有两种,

  • 让机器上网,eclipse会自动从网络下载schema文件并缓存在硬盘上
  • 手动添加schema文件,方法如下Window->Preferences->xml->xml Catalog选中User Specified Entries ,点“add”,Location选File System,然后选择文件...\dist\resources\spring-beans-2.5.xsd,Key Type改为Schema Location,Key后面加上/spring-beans-2.5.xsd,然后点确定。

9.  用ApplicationContext得到配置文件中配好的bean,然后调用:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
    <bean id='personService' class='cn.itcast.service.imp.PersonServiceBean'></bean>

</beans>
ApplicationContext ctr = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
PersonService personService = (PersonService) ctr.getBean("personService");
personService.save();

  注意:<bean>中的id属性值不能包含特殊字符,如果有特殊字符,就用name属性。

posted @ 2012-12-06 17:41  柱柱  阅读(215)  评论(0编辑  收藏  举报