ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:74.42KB ,
资源ID:4734117      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4734117.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Spring的基础学习.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Spring的基础学习.docx

1、Spring的基础学习Spring的基础学习Spring1.spring 概述1)Spring 的创始人: Rod Johnson。2)Spring 大大简化了Java企业级开发,提供了强大,稳定的功能,又没有带来额外的 负担。Spring 有两个主要目标:一是让现有技术更易于使用,二是促进良好的编程 习惯(或称为最佳实践)。3)Spring 是一个全面的解决方案。但它坚持一个原则:不重造轮子。已经有较好解决方案的领域,Spring决不做重复性的实现,比如对象持久化和OR映射,Spring只是对现有的JDBC,Hibernate,JPA 等技术提供支持。4)Spring框架包含许多特性,并被很

2、好地组织在下图所示的七个模块中。下面将依次介绍每个模块。JDBC编码,同时使代码更健壮。它能解析数据库厂商特有的错误代码。并且提供了声明式事物管理方法。Spring ORM 对Hibernate等OR(对象/关系)映射框架提供了支持。Spring AOP 是基于Spring Core包的。典型的一个应用即声明式事务。它提供了符合AOP Alliance 规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合。Spring Web 是

3、为Spring在Web应用程序中使用提供的支持。例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的application context。当与WebWork或Struts一起使用时,这个包使Spring 可与其他框架集成。Spring Web MVC 我们知道Struts作为MVC实现是现在事实上的标准,但编码略显笨拙,Spring提供了一个稍微简单的Spring Web MVC框架,但应用不多。2分述在这里我们不做Spring的全面介绍。我们只着重介绍Spring Core,Spring DAO这两个模块1)Spring CoreIOC就是 DAO接口

4、的实现不再是业务逻辑层调用工厂类去获取,而是通过容器(比如spring)来自动的为我们的业务层设置DAO的实现类。这样整个过程就反过 来,以前是我们业务层主动去获取DAO,而现在是DAO主动被设置到业务逻辑层中来了,这也就是反转控制的由来。通过IOC,我们就可以在不修改任何代码 的情况下,无缝的实现数据库的换库迁移,当然前提还是必须得写一个实现特定数据库的DAO。我们把DAO普遍到更多的情况下,那么IOC就为我们带来更大 的方便性,比如一个接口的多个实现,我们只需要配置一下就ok了,而不需要再一个个的写工厂来来获取了。这就是IOC为我们带来的模块的松耦合和应用的便利性。其实IOC说白了其实就是

5、由我们平常的new转成了使用反射来获取类的实例。依赖注入(Dependency Injection ,DI)所谓依赖注入,就是明确地定义组件接口,独立开发各个组件,然后根据组件间的依赖关系组装运行的设计开发模式。在程序开发时,不用去关心其依赖组件的实现。在系统组装时,按照DAO-BIZ-ACTION的顺序依次注入。也就是说只要是DAO接口的实现类就可以注入到BIZ中,具体使用哪个实现类,组装的时候再决定。注入有两种方式:Setter注入和构造器注入。我们一般使用Setter注入。BeanFactory 和ApplicationContext Org.springframework.beans

6、及org.springframework.context包是Spring IoC容器的基础。BeanFactory接口擅长处理bean的初始化和配置。而ApplicationContext是BeanFactory的扩展,增加了更多支持企业核心内容的功能。BeanFactory所具备的能力和行为也适用于Appllication。 在Spring中,那些组成你应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由Spring容器初始化,装配及管理的对象。而bean 定义以及bean相互间的依赖关系将通过配置元数据来描述。 配置元数据在通常情况下使用XML

7、来作为描述格式,并在里面进行bean的定义。但XML并不是唯一的描述格式。它也可以基于注解的配置。XML的配置元数据的事例。具体参看工程里的实现。 Org.springframework.beans.factory.BeanFactory 是Spring IoC容器的实际代表者,IoC容器负责容纳此前所描述的bean,并对bean进行管理。 BeanFactory是Ioc容器的核心接口。它的职责包括:实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。 Spring为我们提供了许多的BeanFactory实现,XmlBeanFactory就是最常用的一个。该实现将以XML方式描述组成应用

8、的对象以及对象间的依赖关系。XmlBeanFactory类将获取此XML配置元数据,并用它来构建一个完全可配置的系统或应用。 从上图可以看到,Spring IoC容器将读取配置元数据,并通过它对应用中各个对象进行实例化,配置以及组装。 在通常的情况下,我们不需要显式的代码去实例化IoC容器实例。一般只有在Main()方法测试时才需要显示的实例化IoC容器。具体的代码如下:BeanFactory的方法:Resource resource = new ClassPathResource(Spring.xml); BeanFactory bean = new XmlBeanFactory(resou

9、rce);ApplicationContext的方法:ApplicationContext ctx=new ClassPathXmlApplicationContext(“Spring.xml”); 以上两个方法都是创建bean工厂,此工厂将从XML文件中读取bean定义。通过使用getBean(String)方法取得bean的实例。一般最好不要用。这样可以避免对Spring API的依赖。 2)Spring DAOSpring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术, 如JDBC,Hibernate或者JDO,JPA等。它不仅可以让你方便地在这些持久

10、化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常。 为了便于以一种一致的方式使用各种数据访问技术,如JDBC、JDO和Hibernate, Spring提供了一套抽象DAO类供你扩展。这些抽象类提供了一些方法,通过它们你可以 获得与你当前使用的数据访问技术相关的数据源和其他配置信息。 Dao支持类: JdbcDaoSupport - JDBC数据访问对象的基类。 需要一个DataSource,同时为子类提供 JdbcTemplate。 HibernateDaoSupport - Hibernate数据访问对象的基类。需要一个SessionFactory,同时为子类提供 Hi

11、bernateTemplate。也可以选择直接通过提供一个HibernateTemplate来初始化, 这样就可以重用后者的设置,例如SessionFactory, flush模式,异常翻译器(exception translator)等等。 JdoDaoSupport - JDO数据访问对象的基类。 需要设置一个PersistenceManagerFactory, 同时为子类提供JdoTemplate。JpaDaoSupport - JPA数据访问对象的基类。 需要一个EntityManagerFactory,同时 为子类提供JpaTemplate。下面我们举个例子来看看 Spring Jd

12、bcTemplate的使用:/*查询所有用户信息*/ public class UserDaoImpl extends JdbcDaoSupport implements IUserDao private NamedParameterJdbcTemplate namet;public List searchAllUser() List list=new ArrayList(); String sql=select * from t_user; list= this.getJdbcTemplate().query(sql, new RowMapper()/实现RowMapper 里面的方法,他负

13、责对ResultSet的处理返回一个对象,这个对象我们对他进行了打包,每一个User对象里面存了用户名和密码. public Object mapRow(ResultSet rs, int rownum) throws SQLException User user=new User(); user.setId(rs.getInt(id); user.setName(rs.getString(name); user.setPassword(rs.getString(password); user.setBirthday(rs.getDate(birthday); user.setAddress(

14、rs.getString(address); user.setState(rs.getInt(state); return user; ); return list; 说明:在这个UserDaoImpl类中继承了JdbcDaoSupport类,这个类最重要的功能就是使子类可以通过.getJdbcTemplate()方法,获得JdbcTemplate对象。那么你会自动的从JdbcDaoSupport类中继承了setDataSource()方法,JdbcTemplate是Spring JDBC框架中最重要的类,“它简化了JDBC的使用,有助于避免常见的错误,比如忘记关闭数据连接。/*保存用户*以传

15、统(?)为占位符*/public int saveUser(User user) dt=this.getJdbcTemplate(); String sql=insert into t_user(id,name,password,birthday,address,state) + values(?,?,?,?,?,?); int uid=dt.update(sql,new ObjectInteger.valueOf(user.getId(),user.getName(),user.getPassword(),user.getBirthday(),user.getAddress(),Intege

16、r.valueOf(user.getState(); return uid; /*修改用户*使用命名参数 例如(:name)*/ public int updateUser(User user) namedt=new NamedParameterJdbcTemplate(this.getDataSource(); String sql=update t_user set name= :name,password= :password,birthday= :birthday, + address= :address,state= :state where id= :id; SqlParamete

17、rSource namedParam=newBeanPropertySqlParameterSource(user); int count= namedt.update(sql,namedParam); return count; 说明:使用命名参数必须使用NamedParameterJdbcTemplate类。在这个方法里使用命名参数里的BeanPropertySqlParameterSource,使用javaBean的属性作为参数的名称和值。/*使用SimpleJdbcCall类实现存储过程的调用*/public int updateUser(User user) /通过这样的设置就可以无

18、需担心返回参数值的大小写问题啦 this.getJdbcTemplate().setResultsMapCaseInsensitive(true); this.simpleCall=new SimpleJdbcCall(this.getJdbcTemplate() /存储过程 包 名称 .withCatalogName(lrq_user) /存储过程名称 .withProcedureName(UserUpdate); /创建一个 SqlParameterSource实现类来制定传入的参数 SqlParameterSource sqlparam=new MapSqlParameterSource

19、() .addValue(v_name,user.getName() .addValue(v_password, user.getPassword() .addValue(v_birthday, user.getBirthday() .addValue(v_address, user.getAddress() .addValue(v_state, user.getState() .addValue(v_id, user.getId(); /execute方法接受传入的参数 Map out=simpleCall.execute(sqlparam); int code=Integer.parseInt(out.get(errCode).toString(); if(code=0 & out.get(errMsg)=null) return 1; else return 0; 说明:调用存储过程必须使用SimpleJdbcCall类。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1