马士兵Spring学习笔记2011

马士兵Spring学习笔记2011
马士兵Spring学习笔记2011

马士兵Spring学习笔记2011

目录

课程内容 (1)

面向接口编程(面向抽象编程) (2)

什么是IOC(DI),有什么好处 (2)

Spring简介 (2)

Spring IOC配置与应用 (2)

什么是AOP (4)

Spring AOP配置与应用 (4)

Spring整合Hibernate (7)

Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2 (11)

课程内容

1.面向接口(抽象)编程的概念与好处

2.IOC/DI的概念与好处

a)inversion of control

b)dependency injection

3.AOP的概念与好处

4.Spring简介

5.Spring应用IOC/DI(重要)

a)xml

b)annotation

6.Spring应用AOP(重要)

a)xml

b)annotation

7.Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要)

a)opensessionInviewfilter(记住,解决什么问题,怎么解决)

8.Spring JDBC

面向接口编程(面向抽象编程)

1.场景:用户添加

2.Spring_0100_AbstractOrientedProgramming

a)不是AOP:Aspect Oriented Programming

3.好处:灵活

什么是IOC(DI),有什么好处

1.把自己new的东西改为由容器提供

a)初始化具体值

b)装配

2.好处:灵活装配

Spring简介

1.项目名称:Spring_0200_IOC_Introduction

2.环境搭建

a)只用IOC

i.spring.jar , jarkata-commons/commons-loggin.jar

3.IOC容器

a)实例化具体bean

b)动态装配

4.AOP支持

a)安全检查

b)管理transaction

Spring IOC配置与应用

1.FAQ:不给提示:

a)window – preferences – myeclipse – xml – xml catalog

b)User Specified Entries – add

i.Location:D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsd

ii.URI:

file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsd iii.Key Type: Schema Location

iv.Key: https://www.360docs.net/doc/7f594862.html,/schema/beans/spring-beans-2.5.xsd

2.注入类型

a)Spring_0300_IOC_Injection_Type

b)setter(重要)

c)构造方法(可以忘记)

d)接口注入(可以忘记)

3.id vs. name

a)Spring_0400_IOC_Id_Name

b)name可以用特殊字符

4.简单属性的注入

a)Spring_0500_IOC_SimpleProperty

b)

5.

a)Spring_0600_IOC_Bean_Scope

b)singleton 单例

c)proptotype 每次创建新的对象

6.集合注入

a)Spring_0700_IOC_Collections

b)很少用,不重要!参考程序

7.自动装配

a)Spring_0800_IOC_AutoWire

b)byName

c)byType

d)如果所有的bean都用同一种,可以使用beans的属性:default-autowire

8.生命周期

a)Spring_0900_IOC_Life_Cycle

b)lazy-init (不重要)

c)init-method destroy-methd 不要和prototype一起用(了解)

9.Annotation第一步:

a)修改xml文件,参考文档

10.@Autowired

a)默认按类型by type

b)如果想用byName,使用@Qulifier

c)写在private field(第三种注入形式)(不建议,破坏封装)

d)如果写在set上,@qualifier需要写在参数上

11.@Resource(重要)

a)加入:j2ee/common-annotations.jar

b)默认按名称,名称找不到,按类型

c)可以指定特定名称

d)推荐使用

e)不足:如果没有源码,就无法运用annotation,只能使用xml

12.@Component @Service @Controller @Repository

a)初始化的名字默认为类名首字母小写

b)可以指定初始化bean的名字

13.@Scope

14.@PostConstruct = init-method; @PreDestroy = destroy-method; 什么是AOP

1.面向切面编程Aspect-Oriented-Programming

a)是对面向对象的思维方式的有力补充

2.Spring_1400_AOP_Introduction

3.好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码

a)Filter

b)Struts2的interceptor

4.概念:

a)JoinPoint 释意:切面与原方法交接点即切入点

b)PointCut 释意:切入点集合

c)Aspect(切面)释意:可理解为代理类前说明

d)Advice 释意:可理解为代理方法前说明例如@Before

e)Target 释意:被代理对象被织入对象

f)Weave 释意:织入

Spring AOP配置与应用

1.两种方式:

a)使用Annotation

b)使用xml

2.Annotation

a)加上对应的xsd文件spring-aop.xsd

b)beans.xml

c)此时就可以解析对应的Annotation了

d)建立我们的拦截类

e)用@Aspect注解这个类

f)建立处理方法

g)用@Before来注解方法

h)写明白切入点(execution …….)

i)让spring对我们的拦截器类进行管理@Component

3.常见的Annotation:

a)@Pointcut 切入点声明以供其他方法使用, 例子如下:

@Aspect

@Component

public class LogInterceptor {

@Pointcut("execution(public * com.bjsxt.dao..*.*(..))")

public void myMethod(){}

@Around("myMethod()")

public void before(ProceedingJoinPoint pjp) throws Throwable{

System.out.println("method before");

pjp.proceed();

}

@AfterReturning("myMethod()")

public void afterReturning() throws Throwable{

System.out.println("method afterReturning");

}

@After("myMethod()")

public void afterFinily() throws Throwable{

System.out.println("method end");

}

}

b)@Before 发放执行之前织入

c)@AfterReturning 方法正常执行完返回之后织入(无异常)

d)@AfterThrowing 方法抛出异常后织入

e)@After 类似异常的finally

f)@Around 环绕类似filter , 如需继续往下执行则需要像filter中执行FilterChain.doFilter(..)对象一样

执行ProceedingJoinPoint.proceed()方可,例子如下:

@Around("execution(* com.bjsxt.dao..*.*(..))")

public void before(ProceedingJoinPoint pjp) throws Throwable{

System.out.println("method start");

pjp.proceed();//类似FilterChain.doFilter(..)告诉jvm继续向下执行

}

4.织入点语法

a)void !void

b)参考文档(* ..)

如果execution(* com.bjsxt.dao..*.*(..))中声明的方法不是接口实现则无法使用AOP实现动态代理,此时可引入包” cglib-nodep-2.1_3.jar”后有spring自动将普通类在jvm中编译为接口实现类,从而打到可正常使用AOP的目的.

5.xml配置AOP

a)把interceptor对象初始化

b)

i.

1.

2.

例子:

expression=

"execution(public * com.bjsxt.service..*.*(..))"

id="myMethod" />

pointcut-ref="myMethod" />

pointcut-ref="myMethod" />

pointcut="execution(public * om.bjsxt.service..*.*(..))" />

Spring整合Hibernate

1.Spring 指定datasource

a)参考文档,找dbcp.BasicDataSource

i.c3p0

ii.dbcp

iii.proxool

b)在DAO或者Service中注入dataSource

c)在Spring中可以使用PropertyPlaceHolderConfigure来读取Properties文件的内容

2.Spring整合Hibernate

a)

i.

ii.

b)引入hibernate 系列jar包

c)User上加Annotation

d)UserDAO或者UserServie 注入SessionFactory

e)jar包问题一个一个解决

3.声明式的事务管理

a)事务加在DAO层还是Service层?

b)annotation

i.加入annotation.xsd

ii.加入txManager bean

iii.

例如:

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

iv.在需要事务的方法上加:@Transactional

v.需要注意,Hibernate获得session时要使用SessionFactory.getCurrentSession 不能使用OpenSession

c)@Transactional详解

i.什么时候rollback

1.运行期异常,非运行期异常不会触发rollback

2.必须uncheck (没有catch)

3.不管什么异常,只要你catch了,spring就会放弃管理

4.事务传播特性:propagation_required

例如: @Transactional(propagation=Propagation.REQUIRED)等同于(@Transactional)

作用,一个方法声明了@Transactional事务后,其内再调用的方法不需要再声明@Transactional.

5.read_only

例如: @Transactional(propagation=Propagation.REQUIRED,readOnly=true)

当方法声明readOnly=true时,该方法及其调用的方法内都不执行insert update等

d)xml(推荐,可以同时配置好多方法)

i.

ii.

1.

2.

iii.

iv. 可定义扫描目标包下所有实体类

例如:

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactor

yBean">

org.hibernate.dialect.OracleDialect

true

-->

com.bjsxt.model

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

expression="execution(public * com.bjsxt.service..*.*(..))"

id="myServiceMethod" />

e)HibernateTemplate、HibernateCallback、HibernateDaoSupport(不重要)介绍

i.设计模式:Template Method(模板方法)

ii.Callback:回调/钩子函数

iii.第一种:(建议)

1.在spring中初始化HibernateTemplate,注入sessionFactory

class="org.springframework.orm.hibernate3.HibernateTemplate">

2.DAO里注入HibernateTemplate

private HibernateTemplate hibernateTemplate;

@Resource

public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate;

}

3.save写getHibernateTemplate.save();

public void save(TestUser testUser) {

hibernateTemplate.save(testUser);

}

iv.第二种:

1.从HibernateDaoSupport继承(此方法不好用可忽略)

2.必须写在xml文件中,无法使用Annotation,因为set方法在父类中,而且是final的

例如:

首先,新建SuperDAOImpl类(使用Annotation注入--@Component):

@Component

public class SuperDAOImpl {

private HibernateTemplate hibernateTemplate; //此处定义由spring注入管理

public HibernateTemplate getHibernateTemplate() {

return hibernateTemplate;

}

@Resource

public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate;

}

}

此时,xml中必须要有:

class="org.springframework.orm.hibernate3.HibernateTemplate">

或者,SuperDAOImpl类写成下面代码:

@Component

public class SuperDAOImpl extends HibernateDaoSupport {

@Resource(name="sessionFactory")

public void setSuperHibernateTemplate(SessionFactory sessionFactory) {

super.setSessionFactory(sessionFactory);

}

}

对应的xml中则可省略

只要包含

最后,其他类继承SuperDaoImpl类后便可直接使用HibernateTemplate

@Component("u")

public class UserDAOImpl extends SuperDAOImpl implements UserDAO {

public void save(TestUser testUser) {

this.getHibernateTemplate().save(testUser);

}

}

f)spring整合hibernate的时候使用packagesToScan属性,可以让spring自动扫描对应包下面的实体类Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2

1.需要的jar包列表

2.BestPractice:

a)将这些所有的jar包保存到一个位置,使用的时候直接copy

3.步骤

a)加入jar包

b)首先整合Spring + Hibernate

i.建立对应的package

1.dao / dao.impl / model / service / service.impl/ test

ii.建立对应的接口与类框架

1.S2SH_01

iii.建立spring的配置文件(建议自己保留一份经常使用的配置文件,以后用到的时候直接copy改)iv.建立数据库

v.加入Hibernate注解

1.在实体类上加相应注解@Entity @Id等

在字段属性的get方法上加--@Column(name = "表字段名")

2.在beans配置文件配置对应的实体类,使之受管

vi.写dao service的实现

vii.加入Spring注解

1.在对应Service及DAO实现中加入@Component,让spring对其初始化

2.在Service上加入@Transactional或者使用xml方式(此处建议后者,因为更简单)

3.在DAO中注入sessionFactory

4.在Service中注入DAO

5.写DAO与Service的实现

viii.写测试

c)整合Struts2

i.结合点:Struts2的Action由Spring产生

ii.步骤:

1.修改web.xml加入struts的filter

如下:

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

2.再加入spring的listener,这样的话,webapp一旦启动,spring容器就初始化了

如下:

org.springframework.web.context.ContextLoaderListener

contextConfigLocation

classpath*:spring/*applicationContext.xml

3.规划struts的action和jsp展现

4.加入struts.xml

a)修改配置,由spring替代struts产生Action对象

5.修改action配置

a)把类名改为bean对象的名称,这个时候就可以使用首字母小写了

b)@Scope(―prototype‖)不要忘记

iii.struts的读常量:

1.struts-default.xml

2.struts-plugin.xml

3.struts.xml

4.struts.properties

5.web.xml

iv.中文问题:

1.Struts

2.1.8已经修正,只需要改i18n.encoding = gbk

2.使用spring的characterencoding

例:

CharacterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

3.需要严格注意filter的顺序

4.需要加到Struts2的filter前面

https://www.360docs.net/doc/7f594862.html,zyInitializationException

1.OpenSessionInViewFilter

2.需要严格顺序问题

3.需要加到struts2的filter前面

附:

1.

@Autowired 与@Resource 都可以用来装配bean. 都可以写在属性定义上,或写在set方法上

@Autowired (srping提供的) 默认按类型装配

@Resource ( j2ee提供的) 默认按名称装配,当找不到(不写name属性)名称匹配的bean再按类型装配. 可以通过@Resource(name="beanName") 指定被注入的bean的名称, 要是指定了name属性, 就用字段名去做name属性值,一般不用写name属性.

@Resource(name="beanName")指定了name属性,按名称注入但没找到bean, 就不会再按类型装配了.

@Autowired 与@Resource可作用在属性定义上, 就不用写set方法了(此方法不提倡);

2.

a.

Action类前加@Component,则Action可由spring来管理,例子如下:

Action中写:

@Component("u") //spring管理注解

@Scope("prototype") //多态

public class UserAction extends ActionSupport implements ModelDriven{

//内部属性需要有get/set方法且需要set方法前加@Resource或@Autowired }

Struts2配置文件中写

Jsp中

b.

Action中也可不加@Component,Action由struts2-spring-plugin管理。此时,如果Action中定义的属性有set方法则@Autowired 与@Resource也可不写,但是如果没有set方法,则需要在属性前加上

@Autowired 或@Resource才能生效。

3.

Hibernate如果使用load来查询数据,例如:

Service中:

public User loadById(int id) {

return https://www.360docs.net/doc/7f594862.html,erDao.loadById(id);

}

DAO中:

public User loadById(int id) {

return (User)this.hibernateTemplate.load(User.class, id);

}

此时,session(应该说的是Hibernate的session)在事物结束(通常是service调用完)后自动关闭。由于使用的是load获取数据,在jsp页面申请取得数据时才真正的执行sql,而此时session已经关闭,故报错。

Session关闭解决方法:

在web.xml中增加filter—openSessionInView,用于延长session在jsp调用完后再关闭

如下所示:

注意:filter –openSessionInView 一定要在filter—struts2之前调用

Filter顺序—先进后出!

OpenSessionInViewFilter

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

sessionFactoryBeanName

sf(此处默认指定的sessionFactory应为‖ sessionFactory‖默认可省略此行如果shring配置文件中配置的

sessionFactory为‖sf‖则此处需要写sf 一般用不到)

OpenSessionInViewFilter

/*

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

多图详解Spring框架的设计理念与设计模式

Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的JDBC应用做过报道。本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的设计理念。 Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB 的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson 成为一个改变Java世界的大师级人物。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。 Spring简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且 Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 ◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 ◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将

裕兴新概念学习笔记 第一册(85-86)

Lesson 85 Paris in the spring 巴黎之春New Words and expressions 生词和短语 Paris n. 巴黎 cinema n. 电影院(go to cinema去看电影) film n. 电影 beautiful adj. 漂亮的 city n. 城市 never adv. 从来没有 ever adv. 永远,曾经, 究竟 在任何时候 Paris n. 巴黎(法国首都) Lond n. 伦敦(英国首都) New York n. 纽约(美国最大城市) Tokyo n. 东京(日本首都) Washington n. 华盛顿(美国首都) Rome n. 罗马(意大利首都) Sydney n. 悉尼(澳大利亚最大城市) cinema n. 电影院 eg. We are going to the cinema next Sunday. 我们打算下个星期天去看电影. movie theatre (美语) film 1) n. 电影 a film star 电影明星 a film director 电影导演 see the film 看电影 2) n. 底片,胶卷 eg. I want a roll of film. 请给我一卷胶卷.

3) v. 拍电影 film the Olympic games 把奥运会拍成电影 eg. We've filmed abroad. 我们到外国拍摄过电影. beautiful 1) adj. 美丽的 a beautiful flower 美丽的花朵 a beautiful woman 美人,漂亮的女人 2) adj. 很棒的,完美的 eg. What a beautiful game it is! 多么棒的比赛! 与同义词的区别: Beautiful 表示接近和谐联想的美 pretty 并非表示完美无缺的意思,而是着重表示完美无缺的意思,而是着重表示"可爱""令人怜爱"之意. good-looking 指礼貌美 handsome 指容貌端正英俊的(多指男人) city n. 城市,都市 a large city 大都市 eg. What is the largest city in the United States? 美国最大的城市在哪里? city life 都市生活 country life 田园生活,乡下生活 never adv. 决不,永不 never 通常置于一般动词之前,be动词,助动词之后. eg. I never had a chance to meet him. 我始终没有机会与他见面.  I never get up early on Sunday morning.

马原第二章 实践与认识及其发展规律

第二章 实践与认识及其发展规律 实践的观点是辩证唯物论的认识论之第一的和基本的观点。 第一节 认识与实践 一、实践是认识的基础 (一)科学的实践观 中国古代哲学中,实践被称为“践行”“实行”“行”,这里的行都主要指道德伦理行为。 西方哲学史上,亚里士多德研究实践,康德也研究实践,前者是专指人的生命活动,后者专指道德实践。 马克思在《关于费尔巴哈的提纲》中阐明了实践是感性的、对象性的物质活动,认为:“全部社会生活在本质上是实践的”,强调哲学的重要使命在于指导实践改造世界。 1、实践的含义 实践是人们改造客观世界的一切物质性活动。 两层基本含义: 其一,凡是实践都是以人为主体、以客观事物为对象的物质性活动。(不是纯主观的思维活动) 其二,实践是一种直接现实性活动,它可以把观念的存在变为现实的存在。(主观见之于客观的活动) 2、实践的基本结构 实践活动是以改造客观世界为目的、主体与客体之间通过一定的中介发生相互作用的过程。 (1)实践主体

实践主题是指具有一定的主体能力、从事社会实践活动的人。是实践活动中自主性和能动性的因素,担负着设定实践目的、操作实践中介、改造实践客体的任务。 (2)实践客体 实践客体,是实践活动所指向的对象。 客观世界≠客体,只有客观世界中被纳入实践活动的对象才能被认为是实践的客体。 (3)实践中介:各种形式的工具、手段以及运用、操作这些工具的程序和方法。 它包括:作为人的肢体延长、感官和大脑延伸、体能放大的工具系统;语言 (4)主体和客体的关系 主体和客体通过中介产生三种关系: ①认识关系:反映与被反映的关系。 ②实践关系:改造与被改造的关系。 ③价值关系:客体或主体活动对于主体需要的满足程度。 3、实践的三个基本特征 (1)实践具有直接现实性:区别于人的纯主观活动; (2)实践具有自觉能动性:区别于动物的本能活动; (3)时间具有社会历史性:区别于旧唯物主义的实践观。 (二)实践在认识中的决定作用 1、实践是认识的来源 认识的来源只有一个,但获得认识的途径有两个:一是亲自实践获得的经验;二是通过知识的学习和传递获得间接经验。 但不论是直接经验还是间接经验都是实践的产物。

spring框架

spring框架 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应

该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB 容器,它们经常是庞大与笨重的,难以使用。 框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

基于SpringMVC

河南科技学院 2015 届本科毕业论文(设计) 论文(设计)题目:基于SpringMVC的云笔记系统 学生姓名:杨冬 所在院系:信息工程学院 所学专业:计算机科学与技术 导师姓名:张丽君 完成时间:2015-05-10

摘要 本课题所实现的云笔记系统改变了传统的记录笔记的模式,采用云笔记系统,这种新式的方式使得用户在学习中更加方便快捷的记录,分享,收藏笔记。 本系统采用b/s开发模式,分为服务器端和浏览器端。在服务器端主采用MySQL数据库使用MyBatis技术访问数据库。使用Spring框架管理组件,整合MyBatis,处理一些通用通用的业务。使用MVC分层思想,将代码分为控制层,业务层,持久层和视图层,实现了登陆模块,笔记本模块,和笔记模块。登陆模块的主要包括登陆,注册,修改密码和退出登陆功能。笔记本模块主要包含新增,修改,删除功能。笔记模块包含查询,新增,修改,删除功能。在浏览器端主要采用Ajax处理客户端逻辑以及发送异步请求并实现了系统界面的一些动态效果。 关键词:Ajax,MySQL,MyBatis,SpringMVC,Spring,Java。 ABSTRACT The article notes cloud system changed the pattern of traditional note taking, the cloud notes system, this new way allows users to more easily and quickly in the study record, share, used notes.

#马原笔记#第二章 第二节

第二章 认识的本质及发展规律 第二节 真理与价值 一、 真理的客观性、绝对性和相对性 (一) 真理的客观性(真理本身是主观的 客观:普遍有效的) 、 马克思主义:真理是对客观事物及其规律的正确反映。所谓正确反映,是指真理是在实践基础上主体认识对客体本质和规律的符合、一致和接近。 马克思主义真理观与旧唯物主义真理观的“符合论”的区别: 它认为真理与客观事物之间的符合关系,是建立在人类能动地改造世界的实践基础上,是通过人的能动的反映活动而实现的,并且必然随着人类实践的发展而拓展和深化。 真理的客观性表现在:(以下答案不够完整,应从“客观是普遍有效”来解释) 1. 指真理内容的客观性,即真理作为对客观事物及其规律的正确反映,本身也包含着 不以人的意志为转移的客观内容 2. 指真理检验标准的客观性,即真理之所以是真理,并不是因为某位天才人物决断, 而是实践检验的结果,而实践本身是一种客观的物质性活动 (二) 真理的绝对性和相对性 p77-78 真理的绝对性与相对性的辩证关系: 1. 相互依存。 2. 相互包含。 经典真理观(看天) :反映论、可知论、符合论(一元性) 非经典真理观:共识论(集体知觉) ) 相互依存,是说人们对于事物及其本质和规律的每一个正确认识,都是在一定范围内、一定程度上、一定条件下的认识,因而必然是相对的和有局限的;但是,在这一定范围内、一定程度上、一定条件下,它又是对客观对象的正确反映,因而它又是无条件的、绝对的。 相互包含,一是说,真理的绝对性寓于真理性的相对性之中。任何真理所包含的客观内容都只能使人们在特定历史条件下所把握到的,都只是对客观世界及其事物的一定范围、一定程度的正确反映。二是说,真理的相对性必然包含并表现着真理的绝对性。任何真理都与谬误有本质的区别,标志着人们在一定范围内和一定层次上达到了对于无限发展着的物质世界的正确认识,包含着确定的客观内容。

Spring技术内幕:深入解析Spring架构与设计原理

---------------------------------------------------------------最新资料推荐------------------------------------------------------ Spring技术内幕:深入解析Spring架构与设计原 理 Spring 技术内幕: 深入解析 Spring 架构与设计原理 Spring 技术内幕深入解析 Spring 架构与设计原理(一)引子缘起已经很久没有写帖子了,现在总算是有点时间写些东西,也算是对自己的一个记录吧。 刚刚完成了一个软件产品,从概念到运营都弄了一下,正在推广当中,虽然还没有能够达到盈亏平衡,但是这个过程,对自己也算是一种历练。 先不管结果如何,好呆走过这么一遭了。 我打算用这个帖子,把自己在这个过程中的一些心得,特别是对 Spring 新的理解,记录下来。 使用这个帖子的标题,持续下来。 简单来说,自己的软件产品是一个基于互联网的 SaaS 协同软件平台, 操作简单,支持流程定义,管理和多种客户端 -像短信, MSN,智能手机什么的(我这里就不多做什么广告了),也有一个企业版的版本,使用的技术框架是 Hibernate + Spring + Wicket,下面是 Linux 和 MySQL,还有云计算的平台的使用,以支持其扩展性,虽然现在还没有可扩展性的需求,但似乎不难从SaaS 上,就会想到云计算, 其实,它们真的是天生的一对! 1 / 3

关于云计算,自己对这个技术很感兴趣,觉得和开源软件的结合,是很有意思的,因为它们都有基于服务的基因,在云计算平台的使用上,也有一些初步的实践。 云计算是一个很有意思的话题,但在这里主要是想谈 Spring,所以对云计算,这里就先不多说了,但非常欢迎有兴趣的朋友和一起另外找地方讨论!回到正题,在我自己的产品中,其中除了Wicket 和云计算外,其他都是大家非常熟知的了,像Hibernate, Spring, MySQL 什么的。 在这个过程中,发现自己对一些技术点也有了新的认识,最有体会的是 Spring。 当然,在这个过程中,更大的收获是对产品开发整个过程的认识,在这点上,真是一言难尽. . . . . . . . 回到自己还算了解的 Spring, 这次我使用的是 3. 0 的代码,所以,有机会也把这些代码读了几遍,比原来的理解要加深了许多,也发现了不少和 2. 0 代码不同的地方,以及自己一些对 Spring 的新的理解,这些,就让我就用这个帖子系列,给自己总结一下,也算是对自己以前的那个代码分析的帖子做一个新的交代吧。 自己对 Spring 一点小小的见解简化 Java 企业应用的开发,是Spring 框架的目标. 就是我们熟知的当年的那个interface21,也亦非吴下阿蒙了,由它演进出来的 Spring,以及由它带来的崭新开发理念,也早已伴随着这个开源框架的广泛应用,而飞入寻常百姓家。

一个非常有趣的使用spring框架AOP例子

一个非常有趣的使用spring框架AOP例子 接触spring有一段时间了,不过都是看的多,写的少,工作忙,公司也不准备用。自己写过一些小东西用到,也只用到了BeanFactory组装对象,JdbcTemplate代替jdbc,事务管理。。。东抓一把,西抓一把,没形成系统。最近也在看spring自带的reference,一时手痒,写了个AOP的创建advice的例子,比之单纯地使用TransationProxyFactoryBean 对AOP的理解又深入了点,打算看看它的源代码,基于CGLIB的实现对类的代理不了解,倒是好奇它如何实现对接口的代理??也就是利用J2SE的动态代理技术。 例子如下:讲述一间书店开始打折促销,规则是每一名顾客只能买一本书,而且已经脱销了。。。。。你可以去掉TestAdvice里的注释看看各种运行结果,具体就不解释咯,在代码注释里。 首先,你必须对增强(advice)有所了解,增强就是在特定连接点执行的动作。advice contains the logic of your aspect。增强,分为4类: 前增强(before)在连接点之前调用 后增强(after)在连接点执行之后调用、 环绕增强(around)完整控制整个方法流程,必须调用MethodInvocation的proceed促使真实操作发生 异常增强针对某个异常抛出时调用 书店,一个buyBook业务: package com.denny_blue.springdemo.aop; public interface BuyBook { public void buyBook(String customer,String book)throws NoThisBookException; } 实现此接口的一个业务对象,如果顾客要买就抛出NoThisBookException异常。 package com.denny_blue.springdemo.aop; public class MyBuyBook implements BuyBook { public void buyBook(String customer,String book)throws NoThisBookException{ if(book.equals("")) throw new NoThisBookException("对不起,没有"+book+"存货了!"); System.out.println(customer+",你好,你已经购买了一本"+book+"!"); } }

传智播客Spring25视频教程学习笔记

传智播客Spring2.5视频教程学习笔记1.全面阐释Spring及其各项功能 1.1Spring是什么? Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发。 1.2IoC控制反转 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。 1.3依赖注入(DI:Dependicy Injection) 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。 1.4面向切面(AOP) 1.5为什么要使用Spring 解耦(各层之间通过接口调用) 提供事务、消息服务 单例模式 AOP支持 辅助类(JDBCTemplate,HibernateTemplate) 支持与Struts,Hibernate,JPA等框架的集成 1.6实例化bean的方式 构造函数(90%使用),静态工厂方法,实例工厂方法 1.使用类构造器实例化 2.使用静态工厂方法实例化 public class OrderFactory { public static OrderServiceBean createOrder(){ return new OrderServiceBean(); } } 3.使用实例工厂方法实例化 public class OrderFactory { public OrderServiceBean createOrder(){ return new OrderServiceBean(); } }

自考本科《马原》第二章第二节重要考点:认识的辩证运动

自考本科《马原》第二章第二节重要考点:认识的辩证运动当你能飞的时候就不要放弃飞,当你能梦的时候就不要放弃梦,当你能爱的时候就不要放弃爱。生命太过短暂,今天放弃了明天就不一定能得到! 第二章认识的本质及其规律 第二节认识的辩证运动 认识是在实践中主体对客体的能动的反映,是一个辩证的发展过程。在实践中,人们先是产生感性认识,在感性认识积累的基础上,产生了理性认识,然后在理性认识的指导下去进行新的实践;在新的实践中又产生新的认识。人的认识就是从实践到认识、再从认识到实践这样一个不断反复、无限发展的过程。 一、从感性认识到理性认识 1、认识的感性形式和理性形式 了解即可,常以选择题出现。 认识是主体对客体的反映,这种反映有两种基本形式,即感性形式和理性形式。这两种形式是由认识主体和认识客体的特征所决定的。 先从客体方面来看。任何客体即认识对象都是现象与本质的统一体。反映事物现象的感性形式和反映事物本质的理性形式。 再从主体方面来看。作为认识主体的人,他的反映器官可以分为两个部分:一部分是感觉器官;一部分是思维器官(人脑)。一般地可以把感觉器官看作主要是反映客体的现象、外部联系,而思维器官则反映客体的本质、内部联系。 2、感性认识和理性认识 一般了解,常以选择题出现。 感性形式产生于感性认识,感性认识是认识的初级阶段。感性认识分为感觉、知觉和表象三种形式。感觉是人脑通过人的感觉器官眼、耳、鼻、舌、身直接反映事物个别特性的认识。知觉是比感觉高一级的反映形式,它是感觉的综合,是把各种感觉集中在一起并把它们组合起来,形成对对象各方面外部特性的整体的认识。表象是事物感性形象在大脑中的再现,是指曾经作用于人的感觉器官而引起感觉的事物在离开人的感官以后,它的感性形象在人的大脑中重新浮现。 理性形式产生于理性认识,理性认识是认识的高级阶段。理性认识包括概念、判断和推理三种形式。概念是对事物本质、全体的反映,它包含同类事物共同的、一般的特性。判断是概念的展开,是一种利用概念对事物做出某种判定的认识形式,这种判定反映了事物之间的内部联系和关系。推理是从事物的联系和关系中由已知合乎规律地推出未知的认识形式,它由判断所构成,是人们获得新知识的重要手段。

java框架Spring2复习题

一、选择题(每题2分,共计100分) 1.下面关于AOP的说法错误的是()。 A.AOP将散落在系统中的“方面”代码集中实现 B.AOP有助于提高系统的可维护性 C.AOP已经表现出了将要替代面向对象的趋势 D.AOP是一种设计模式,Spring提供了一种实现 2.事务隔离级别是由谁实现的?()。 A.Java应用程序 B.Hibernate C.数据库系统 D.JDBC驱动程序 标准SQL规范: 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别;为了解决更新丢失,脏读,不可重读(包括虚读和幻读)等问题在标准SQL规范中,定义了4个事务隔离级别,分别为未授权读取,也称为读未提交(read uncommitted);授权读取,也称为读提交(read committed);可重复读取(repeatable read);序列化(serializable). 3.下列哪项不是Spring的依赖注入方式()。[选两项] A.setter注入 B.getter注入 C.接口注入 D.构造注入 4.在Spring框架中,面向方面编程(AOP)的目标在于( )。 A.编写程序时不用关心其依赖组件的实现 B.将程序中涉及的公用问题集中解决 C.封装JDBC访训数据库的代码,简化数据访训层的得复性代码 D.实现面面的”无刷新”

A.Spring提供了HibernateDaoSupport类来简化Hibernate的使用 B.在Spring配置文件种可以通过Spring提供的LocalSessionFactoryBean,来获得SessionFactory的实例 C.通过集成Spring和Hibernate,用Spring管理程序的依赖关系,将SessionFactory 注入到DataSource中 D.通过Spring,可以在Biz层代码中无需直接实例化DAO类,而是通过注入得到 6.依赖注入说法正确的是()。 A.依赖注入的目标是在代码之外管理程序组建间的依赖关系 B.依赖注入即是“面向接口”的编程 C.依赖注入是面向对象技术的替代品 D.依赖注入的使用会增大程序的规模 7.关于spring说法错误的是()。 A.spring是一个轻量级JAVA EE的框架集合 B.spring是“依赖注入”模式的实现 C.使用spring可以实现声明事务 D.spring提供了AOP方式的日志系统8.在Spring 中,配置Hibernate 事务管理器(Hibernate TransactionManager)时,需要 注入的属性名称是( )。 A.dataSource B.sessionFactory C.baseHibernateDao D.transactionProxyFactoryBean 9.下面()不是Spring AOP中的通知类型。 A.前置通知 B.后置通知 C.代理通知 D.异常通知

springMVC 个人学习笔记

第一、二课 所需jar包,本次使用版本是spring3.2.3 Ps:spring的文件用上面的基本够了,但是整个过程可能需要很多的commons 软件,如fileupload,io,lang包 SpringMVC demo案例 1、加入相关jar包 2、web.xml配置 springMVC org.springframework.web.servlet.DispatcherServlet 1 springMVC /这里一定要写成这样,如果写成 /* 输入地址总是No mapping found for HTTP request with URI Ps:springMVC 也有个默认的xml配置文件,类似struts2的struts.xml 该文件可以指定,即上面紫色注释掉部分。 默认路径是/WEB-INF/springMVC-servlet.xml

3、springMVC-servlet.xml 4、编写controller 该controller类似struts2的action,编写的controller 要实现org.springframework.web.servlet.mvc.Controller接口 第三课 springMVC的传值 通过modelandview 传值 1、

各技术框架架构图

各种系统架构图及其简介 1.Spring 架构图 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE 环境(Web或EJB )、独立应用程序、测试环境之间重用。 组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: ?核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转(IOC )模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 ?Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI 、EJB 、电子邮件、国际化、校验和调度功能。 ?Spring AOP :通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP 。Spring AOP 模块为基于Spring 的应用程序中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中。 ?Spring DAO :JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构。 ?Spring ORM :Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO 、Hibernate 和iBatis SQL Map 。所有这些都遵从Spring 的通用事务和DAO 异常层次结构。

Spring中文开发详细手册

Spring开发教程 Spring教程 (1) Spring框架概述 (2) Spring是什么? (2) Spring的历史 (3) Spring的使命(Mission Statement) (3) Spring受到的批判 (3) Spring包含的模块 (4) 总结 (5) Spring的IoC容器 (6) 用户注册的例子 (6) 面向接口编程 (7) (用户持久化类)重构第一步——面向接口编程 (8) 重构第二步——工厂(Factory)模式 (9) 重构第三步——工厂(Factory)模式的改进 (9) 重构第四步-IoC容器 (10) 控制反转(IoC)/依赖注入(DI) (10) 什么是控制反转/依赖注入? (10) 依赖注入的三种实现形式 (11) BeanFactory (13) BeanFactory管理Bean(组件)的生命周期 (14) Bean的定义 (15) Bean的之前初始化 (19) Bean的准备就绪(Ready)状态 (21) Bean的销毁 (21) ApplicationContext (21) Spring的AOP框架 (21) Spring的数据层访问 (21) Spring的声明式事务 (21) Spring对其它企业应用支持 (22)

名词解释 容器: 框架: 框架 容器 组件: 服务: Spring框架概述 主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。 目的:让学员全面的了解Spring框架,知道Spring框架所提供的功能,并能将Spring 框架和其它框架(WebWork/Struts、hibernate)区分开来。 Spring是什么? Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ?目的:解决企业应用开发的复杂性 ?功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ?范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ■轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ■控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ■面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实

SpringBoot学习笔记

10分钟创建一个SB应用: 1.创建项目 2将springboot的版本改为1.5.6(不修改后面操作数据库会报类找不到) 1.5.6.RELEASE 3.pom.xml中配置3个数据库相关的内容 4.在入口文件增加注解(不注解会导致mapper识别不到): @MapperScan("com.example.demo.mapper") 5.创建generator/generatorConfig.xml文件,并修改数据库账号密码、包名、表名 6.修改application.yml,增加数据源相关的配置 7.创建一个maven的Run配置,设置mybatis-generator:generate -e 8.编写Service接口和Service实现类 9.编写Controller和方法 10.启动应用 创建项目 https://https://www.360docs.net/doc/7f594862.html,/lom9357bye/article/details/69677120 通过tomcat部署项目 https://https://www.360docs.net/doc/7f594862.html,/PJH-Forever/p/8026330.html spring boot configuration annotation proessor not found in classpath 引入如下依赖: org.springframework.boot spring-boot-configuration-processor true pom.xml中的parent 只有parent设置了,后面的才不用写version;没有在parent中设置的,后面必须写version,否则只会下载一个unknown的错误包 一些tips: spring boot 2.0相比1.5.x,变更比较大,一些类去除了,因此要注意不同版本的api 如果在generatorConfig.xml中配置了某个表,但是没有用到,那么程序起来的时候会报错;删除即可 Durid包含的主要功能:

spring框架

由于软件开发的复杂性而创建了Spring框架。Spring使用基本的JavaBeans完成以前只能由EJB完成的事情。但是,Spring的使用不仅限于服务器端开发。从简单性,可测试性和松散耦合的角度来看,大多数Java应用程序都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供更多的企业应用程序功能 ◆范围:任何Java应用程序 Spring是控制(IoC)和面向方面(AOP)容器框架的轻量级反转。要谈Spring的历史,就要先谈J2EE。J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。 曾经使用过EJB开发JAVA EE应用的人,一定知道,在EJB开始的学习和应用非常的艰苦,很多东西都不能一下子就很容易的理解。EJB 要严格地实现各种不同类型的接口,类似的或者重复的代码大量存在。而配置也是复杂和单调,同样使用JNDI进行对象查找的代码也是单调而枯燥。虽然有一些开发工作随着xdoclet的出现,而有所缓解,但是学习EJB的高昂代价,和极低的开发效率,极高的资源消耗,都造成了EJB的使用困难。而Spring出现的初衷就是为了解决类似的这些问题。 Spring的一个最大的目的就是使JAVA EE开发更加容易。同时,

Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring 致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说Spring是一个提供了更完善开发环境的一个框架,可以为POJO(Plain Ordinary Java Object)对象提供企业级的服务。Spring的形成,最初来自Rod Jahnson所著的一本很有影响力的书籍《Expert One-on-One J2EE Design and Development》,就是在这本书中第一次出现了Spring的一些核心思想,该书出版于2002年。另外一本书《Expert One-on-One J2EE Development without EJB》,更进一步阐述了在不使用EJB开发JAVA EE企业级应用的一些设计思想和具体的做法。有时间了可以详细的研读一下。Spring的初衷: 1、JAVA EE开发应该更加简单。 2、使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。 3、为JavaBean提供了一个更好的应用配置框架。 4、更多地强调面向对象的设计,而不是现行的技术如JAVA EE。 5、尽量减少不必要的异常捕捉。 6、使应用程序更加容易测试。 Spring的目标: 1、可以令人方便愉快的使用Spring。 2、应用程序代码并不依赖于Spring APIs。

相关文档
最新文档