《spring入门纲要.doc》由会员分享,可在线阅读,更多相关《spring入门纲要.doc(32页珍藏版)》请在金锄头文库上搜索。
1、我的je博客: http:/ 依赖注入:在运行期,由外部容器动态地将依赖对象注入到组件中控制反转:应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部窗口负责得。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。2.spring的主要特性。(1)降低组件之间的耦合度,实现软件各层之间的解耦。(2)可以使用容器提供的众多服务,如:事务管理服务、消息服务、JMS服务、持久化服务等等。(3)容器提供单例模式支持,开发人员不再需要自己编写实现代码。(4)容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。(5)容器提供的众多辅作类,使用这些类能够加快应用的开发
2、,如:JdbcTemplate、HibernateTemplate.(6)对主流的应用框架提供了集成支持。3.常用技术控制反转/依赖注入-面向切入编程-与主流框架的整合、管理-二、基本实例1.准备搭建环境distspring.jarlibjakata-commonscommons-loggin.jar如果使用了切面编程,还需下列jar文件:libaspectjaspectjweaver.jar和aspectjrt.jarlibcglibcglib-nodep-2.1.3.jar如果使用了jsr-250中的注解,还需要下列jar文件:libj2eecommon-annotations.jar2.
3、搭建并测试环境建立名为spring_01_base项目,根据需求导入jar包。建立一个Junit测试单元SpringEnvTest,测试代码如下:Testpublic void testEnv() ApplicationContext ctx = new ClassPathXmlApplicationContext(beans.xml);beans.xml配置文件在此省略(见下)。运行此测试如无错,则说明环境搭建成功。说明:beans.xml可以在类路径下进行配置,也可以在具体的目录下配置。可以是一个配置文件,也可以是多个配置文件组成String数组传入。3.实例作如下准备工作:(1)建立Us
4、eDao接口,代码如下:package com.asm.dao;public interface UserDao void save();(2)建立UserDao接口的实现类,UserDaoImplpackage com.asm.dao.impl;import com.asm.dao.UserDao;public class UserDaoImpl implements UserDaopublic void save() System.out.println(执行save方法.);(3)在src目录下配置此beans.xml,它的配置如下:说明:bean代表一个实质的java类,通过它的id可
5、以获取一个此类的一个对象。补充:让xml配置文件在编译时提示windowspreferencesmyeclipsefiles and editorsxmlxml catalog 点add,在出现窗口的location中选“file system”,然后在spring解压目录的dist/resources目录中选择“spring-beans-2.5.xsd”,并将key Type值改为“Schema Location”,key值为:http:/www.springframework.org/schema/beans/spring-beans-2.5.xsd(4)Junit测试单元SpringEn
6、vTest中增加如下代码测试:Testpublic void base() ApplicationContext ctx = new ClassPathXmlApplicationContext(beans.xml);UserDao userDao = (UserDao) ctx.getBean(userDaoImpl);userDao.save();以上的代码就是通过配置文件beans.xml获取所需要的实例对象。4.三种bean的生成方式除了上面使用的类直接生成方式,还有bean静态工厂及bean实例工厂。bean静态工厂的配置如下:相应的工厂类代码如下:package com.asm.d
7、ao.impl;public class UserDaoImplFactory public static UserDaoImpl getUserDaoImpl()return new UserDaoImpl();bean实例工厂的配置如下:相应的工厂类的代码如下:package com.asm.dao.impl;public class UserDaoImplFactory2 public UserDaoImpl getUserDaoImpl() return new UserDaoImpl();5.bean的作用域singleton:返回bean的同一个实例,也是默认的作用域(无状态bea
8、n使用此作用域)prototype:每次请求都会创建一个实例(有状态bean使用此作用域)request、session、global session这三个作用域主要用在web应用中6.bean的生命周期(1)什么时候初始化bean实例当scopesingleton,即默认情况,会在装载配置文件时实例化。如果希望在调用getBean时才初始化,可以使用lazy-init=true 补充:如果希望希望该配置文件中的所有bean都延迟初始化,则应在beans根结点中使用lazy-init=true。当scope=prototype时,在调用getBean()方法时才会初始化。(2)生命周期:构造器
9、、init方法、获取bean后的操作、destroy方法(ctx.close、注意如果bean的scope设为prototype时,当ctx.close时,destroy方法不会被调用)7.属性注入Setter方式(1)简单属性(如String):(2)对象属性-外部bean注入:在上面的中增加如下配置:对象属性-内部bean注入:在上面的中增加如下配置:(3)集合属性注入:List值一List值二List值三Set值二Set值一Set值三firstsecondthird注意:在相应的字段上一定要有setter方法,才能注入。补充:使用继承。在beans.xml中的配置如下:相当于在XXX bean实例中也有username属性设置。8.属性注入构造器方式