Spring
Spring是目前非常流行的框架,它可以集成基本上所以的基于J2EE的流行开源框架
1 1、Spring的导入
1、导入jar包
dist中的所有文件
common-loggin
2、创建beans.xml文件,通过这个文件来进行spring常规配置(在类路径下创建)
3、创建相应的对象
4、在beans.xml中设置对象
5、写测试类
2 2、IOC
Action Service DAO
Service
UserDao dao = new UserDao();-->意味着依赖于实现类,将来如果更改实现类,在调用的地方需要全部修改
使用Factory可以解决这一的问题
DI来注入对象
2.1 2.1、spring的对象类型
singleton和Prototype
singleton是单例
Prototyp是多例
默认是单例的对象
使用范围:
只要属性中没有需要修改的值(dao,service这两层的数据一般不会有相应的属性会修改)所以可以考虑用单例
如果属性中有需要修改的变量如:action中会存储很多要操作的vo类,此时这个对象的状态会被修改,就要使用多例
2.2 2.2、依赖注入
基本条件:所有的类都要被spring所管理才能进行依赖注入
有多种方式可以进行注入
1、使用set注入(最常用的方式)
1.1、提供相应的要注入的类的setter
1.2、在配置文件中注入
2、基于构造函数的注入(了解)
2.3 2.3、属性注入和自动注入
1、属性注入
2、自动注入
一般不使用
2.1、byName是根据set的名称来注入,如果名称不对就无法注入(默认情况)
2.2、byType表示是根据类型来注入,和名称无关,如果一个类中有两个相同类型的对象就无法注入
如果要使用一般使用byName
2.4 2.4、基于Annotation的注入
1、设置Beans.xml的schma
2、在类上面设置
3、spring3.0之后的Annotation建议
由于开发中一般都是分为四层体系:data,dao,service,action,
建议在dao层
service
action层
3 3、AOP
Aspect Orient Programming(面向方面的编程)
3.1 3.1、静态代理
当需要为一些成熟的项目增加日志时,需要修改到原有代码,此时可以为原有的对象创建一个静态代理类,在这个代理类中实现相应的日志或者权限控制操作
使用静态代理带来的最大问题,需要为每一个类都加入相应的控制代码,这些代码其实是和业务逻辑没有关系的。
3.2 3.2、动态代理
动态代理可以将一些横切性的问题(日志管理,权限控制)提取出来成为一个模块,之后在运行的时候根据需要切入到原有正常代码中。
步骤:
1、 创建动态代理类
创建一个类实现InvocationHandler接口。以后创建对象就完全通过这个代理类来进行创建
2、在代理类创建相应的要代理的对象
3、创建一个静态的newInstance方法来创建代理对象
4、创建了代理对象之后,这个代理对象在执行任何方法时都会先执行invoke方法,就可以在这个方法中加入控制信息
5 、根据以上步骤之后,日志管理就被提取成为一个独立的模块,在运行时进行加入
6、由于使用的newInstance这个static的方法注入对象,所以无法使用Annotation需要使用xml的配置文件
7、此时可以考虑为相应的方法增加Annotation来增强相应的操作
3.3 3.3、使用Spring实现AOP
Spring就是使用动态代理来实现AOP的
3.3.1 Annotation
1、使用Annotation实现
1.1、在xml中打开aop的自动检索
1.2、创建一个需要实现动态代理的类
1.3、导入aspect包,spring使用的是AspectJ这个包来实现AOP,所以需要导入这个包
1.4、在这个类上面使用@Aspect来声明这个类是一个切面类
1.5、在相应的要进行操作横切点上面加入PointCut的说明
1.6、如果希望获取相应的调用信息,可以通过JoinPoint这个参数进行传递
1.7、其他知识
3.3.2 xml
使用annotation需要在大量的joinpoint上加入execution,感觉不是很方便,使用xml会相对简单一些
4 4、SSH的整合
整合三者的第一步:导入相应的包(注意检查包中的冲突)
4.1 4.1、和hibernate的整合
1、写hibernate的配置文件并且完成bean的创建,完成相应的映射
2、写spring的beans.xml
使用spring来管理hibernate最主要的就是让Spring来管理SessionFactory
3、在beans.xml中加入spring的事务控制代码
4.2 4.2、HibernateTemplate的使用
使用HibernateTemplate可以比较方便的来做一些相应的操作
1、为HibernateTemplate注入SessionFactory
2、直接可以使用hibernateTemplate调用相应的和方法
3、模板方法的设计模式(尽可能掌握)
4.3 4.3、HibernateDaoSupport
Spring为Hibernate提供了一个HibernateDaoSupport的基类方便我们来处理数据信息
只用继承HibernateDaoSupport就可以了
特别注意需要注入的方式
使用hibernateDaoSupport最大的好处在于可以方便的获取到hibernate的session
特别注意:不一定非得这样使用
4.4 4.4、和struts2整合
1、拷贝jar包(struts2-spring-plugin-2.3.1.jar)
2、在web.xml中加入相应配置
5 5、SpringMVC
当需要学习一个新的MVC框架需要从以下方面入手:
1、环境搭建(实现helloworld)
2、如何传递参数到Controller
3、如何从控制器获取参数
4、如何完成文件的上传
5、如何完成验证
6、异常的处理
7、深入学习一些原理和源代码的学习
5.1 1、整体架构
5.2 2、环境搭建
5.2.1 2.1、web.xml
5.2.2 2.2、xxx-servlet.xml
5.2.3 2.3、controller
5.2.4 2.4、Viewer
5.3 3、Rest
webservice SOAP xsd
5.4 Subtopic