《spring框架(一些摘录).doc》由会员分享,可在线阅读,更多相关《spring框架(一些摘录).doc(10页珍藏版)》请在金锄头文库上搜索。
1、Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller等开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。Spring 中包含的关键特性: 强大的基于 J
2、avaBeans 的采用控制翻转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。 一个可用于从 applet 到 Java EE 等不同运行环境的核心 Bean 工厂。 数据库事务的一般化抽象层,允许宣告式(Declarative)事务管理器,简化事务的划分使之与底层无关。 内建的针对 JTA 和 单个 JDBC 数据源的一般化策略,使 Spring 的事务支持不要求 Java EE 环境,这与一般的 JTA 或者 EJB CMT 相反。 JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码), 简化了错误处理, 大大减少
3、了程序员的编码量. 再次利用JDBC时,你无需再写出另一个 终止 (finally) 模块. 并且面向JDBC的异常与Spring 通用数据访问对象 (Data Access Object) 异常等级相一致. 以资源容器,DAO 实现和事务策略等形式与 Hibernate,JDO 和 iBATIS SQL Maps 集成。利用众多的翻转控制方便特性来全面支持, 解决了许多典型的Hibernate集成问题. 所有这些全部遵从Spring通用事务处理和通用数据访问对象异常等级规范. 灵活的基于核心 Spring 功能的 MVC 网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框
4、架将适应于多种呈现(View)技术,例如 JSP,FreeMarker,Velocity,Tiles,iText 以及 POI。值得注意的是,Spring 中间层可以轻易地结合于任何基于 MVC 框架的网页层,例如 Struts,WebWork,或 Tapestry。 提供诸如事务管理等服务的面向方面编程框架。 在设计应用程序Model时,MVC 模式(例如Struts)通常难于给出一个简洁明了的框架结构。Spring却具有能够让这部分工作变得简单的能力。程序开发员们可以使用Spring的 JDBC 抽象层重新设计那些复杂的框架结构。以下是一些笔记:1.使用jar包spring.jarcomm
5、ons-logging.jar使用aopaspectjweaver.jar , aspectjrt.jar, cglib-nodep-2.1_3.jar使用注解common-annotations.jar2.实例化容器ApplicationContext context=new ClassPathXmlApplicationContext(new String“beans.xml”);ApplicationContext context=new ClassPathXmlApplicationContext(“beans.xml”);ApplicationContext context=new
6、FileSystemXmlApplicationContext(new String“d:beans.xml”);3.事务Transactional(propagation=Propagation.Required)4. 1) 单例模式下singleton:默认情况下,加载beans.xml实例化各个bean /验证:构造方法中输出信息通过来延迟初始化bean,这时,只有第一次获取bean时才初始化2) scope=prototype时,getBean(“”)时实例化bean加载实例后,执行method方法关闭容器后,执行method1方法三种实例化bean的方式1使用类构造器实例化2.使用静
7、态工厂方法实例化public class OrdreFactorypublic static OrderFactory createOrder()return new OrderServiceBean();3.使用实例工厂方法实例化public class OrdreFactorypublic OrderFactory createOrder()return new OrderServiceBean();依赖注入手工装配Autowired或Resource注解方式进行装配,common-annotations.jar这两个注解的区别:Autowired默认按类型装配,Resource默认按名称
8、装配,当找不到与名称匹配的bean才会按类型装配Beans.xml 导入beans xmlns:context=”http:/www.springframework.org/schema/context”1)public class PersonServiceBean implements PersonServiceResource /默认按名称装配,当找不到与名称匹配的bean才会按类型装配private PersonDao personDao;public void test()personDao.add();2)public class PersonServiceBean impleme
9、nts PersonServiceResource(name=”personDao”)private PersonDao personDao;public void test()personDao.add();3)public class PersonServiceBean implements PersonServiceprivate PersonDao personDao;Resourcepublic void setPersonDao (PersonDao personDao) this.personDao=personDao;public void test()personDao.ad
10、d();Spring 自动扫描和管理bean Spring2.5后Beans.xml 加入: /指定包下所有类1)Service /getBean(“personServiceBean”);名称为类名,首字母小写,默认作用域为singletonpublic class PersonServiceBean implements PersonServiceprivate PersonDao personDao;public void setPersonDao (PersonDao personDao) this.personDao=personDao;public void test()perso
11、nDao.add();2)Service (“personService”) Scope(“prototype”)/指定bean名称 声明作用域 public class PersonServiceBean implements PersonServiceprivate PersonDao personDao;public void setPersonDao (PersonDao personDao) this.personDao=personDao;PostConstruct/初始化方法public void init()system.out.println(“加载初始化”);PreDestroy/关闭容器释放public void destroy()system.out.println(“关闭容器释放”);public void test()personDao.add();动态代理AOP1) 如果类实现接口,使用jdk生成代理2) 如果类没有实现接口,则使用cglib生成代理 cglib-nodep-2.1_3.jarjdbc.properties中配置数据库信息 $ 获取