Spring学习笔记(马士兵spring视频笔记)

Spring学习笔记(马士兵spring视频笔记)
Spring学习笔记(马士兵spring视频笔记)

课程内容

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/f114860138.html,/schema/beans/spring-beans-2.5.xsd

2. 注入类型

c)Spring_0300_IOC_Injection_Type

d)setter(重要)

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

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

2.id vs. name

a)Spring_0400_IOC_Id_Name

b)Id\name都行

c)name可以用特殊字符

3.简单属性的注入

a)Spring_0500_IOC_SimpleProperty

b)

4.

Request\Session\GlobalSession只有Spring和Web Framework结合时才会起作用,比如Spring和Struts

结合时才配,但是很少配、、、、

a)Spring_0600_IOC_Bean_Scope

b)singleton 单例(默认为Singleton)

在每个Sprign IOC容器中一个Bean定义对应一个对象实例

c)proptotype 每次创建新的对象

5.集合注入

a)Spring_0700_IOC_Collections

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

6.自动装配

a)Spring_0800_IOC_AutoWire

b)byName

根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,

并将其与属性自动装配。例如UserService里面有userDAO1属性,在装配时就会查找与userDAO1属性相同的Bean,即 ,所以当System.out.println(service.getUserDAO1)时,结果为daoId=1。

c)、byType

如果容器中存在一个与指定类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType类型自动装配。

byType时,如果按照上面的形式写,将出错,因为userDAO1和userDAO2类型一样。

d)、constructor (了解):与ByType方式类似,不同之处在于它应用于构造器参数,如果在容器中没有找到与构造器参数类型一致的bean,那么将抛出异常、、、

e) :autodetect(了解):通过bean的自省机制来决定使用Constructor还是byType 方式进行自动装配。如果发现默认的构造器,那么将使用byType方式d)、如果所有的bean都用同一种,可以使用beans的属性:default-autowire

7.生命周期

a)Spring_0900_IOC_Life_Cycle

b)lazy-init (不重要)

如果不加 lazy-init=”true”,只要容器一初始化,也就是ClassPathXmlApplicationContext 一

new出来,bean里面的所有class都会初始化、、加上之后如果Context初始化,class就不会初始化,而是用到时初始化、、、

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

8.Annotation第一步:

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

9.@Autowired

a)默认按类型by type

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

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

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

10.@Resource(重要)

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

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

c)可以指定特定名称

d)推荐使用

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

11.@Component @Service @Controller @Repository

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

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

12.@Scope

13.@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\@After加在切入点上的建议

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

f)Weave 释意:织入

Spring AOP配置与应用

1.两种方式:

a)使用Annotation

b)使用xml

2.Annotation

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

b)beans.xml

以及xsi:schemaLocation="

https://www.360docs.net/doc/f114860138.html,/schema/aop

https://www.360docs.net/doc/f114860138.html,/schema/aop/spring-aop-2.5.xsd">还需要在Preferences --->xml Catalog引入s pring-aop-2.5.xsd

(E:\Java Files\SpringJar\spring-framework-2.5.6\dist\resources)

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

d)建立我们的拦截类

e)用@Aspect注解这个类

@Aspect

@Component

public class LogInterceptor {

@Pointcut("execution(public * com.bjsxt.service..*.add(..))")

public void myMethod(){};

@Before("myMethod()")(在指定方法执行之前执行的方法)

public void before() {

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

}

@Around("myMethod()")

public void aroundMethod(ProceedingJoinPoint pjp) throws Throwable {

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

pjp.proceed();

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

}

}

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..*.*(..))" />

动态代理:Proxy和INvocationHandler的使用

Spring整合Hibernate

1.Spring 指定datasource

a)参考文档,找dbcp.BasicDataSource

i.c3p0

ii.Dbcp

iii.Spring 里面的commons-dbcp.jar和commons-pool.jar

classpath:com/foo/jdbc.properties

class="https://www.360docs.net/doc/f114860138.html,mons.dbcp.BasicDataSource">

iv.proxool

b)在DAO或者Service中注入dataSource

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

2.Spring整合Hibernate

a)

i.

ii.

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

classpath:jdbc.properties

class="https://www.360docs.net/doc/f114860138.html,mons.dbcp.BasicDataSource">

value="${jdbc.driverClassName}"/>

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

https://www.360docs.net/doc/f114860138.html,er

com.bjsxt.model.Log

org.hibernate.dialect.MySQLDialect

true

iii.

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.

iv.

v.

例如:

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

vi.在需要事务的方法上加:@Transactional,会自动在前后加上关于事务的业务逻辑,开始时就是BeganTransaction(),结尾时是Transaction Commit().如果捕捉到任何的异常,就会自动Rollback(),

如果是runTime异常,会自动回滚。。。

vii.需要注意,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

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/f114860138.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/f114860138.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也提供了很多基础功能(事务管理、持久化框架集成等等),将

马原知识点整理

1、什么是马克思主义?(P2-P3) (1)马克思主义是由马克思、恩格斯创立的,为他们的后继者所发展的,以批判资本主义、建设社会主义和实现共产主义为目标的科学理论体系,是关于无产阶级和人类解放的科学。它包括马克思主义哲学、马克思主义政治经济学和科学社会主义三个有机统一基本组成部分。 (2)①从创造者、继承者的认识成果讲,马克思主义是由马克思、恩格斯创立,由其后各个时代、各个民族的马克思主义者不断丰富和发展的观点和学说的体系;它既包括有马克思、恩格斯创立和列宁等发展了的马克思主义,也包括中国共产党人将其与中国具体实际相结合,不断推进马克思主义中国化的理论成果。 ②从阶级属性讲,马克思主义是无产阶级争取自身解放和整个人类解放的科学理论,是关于无产阶级斗争的性质、目的和解放条件的学说; ③从研究对象和主要内容讲,马克思主义是无产阶级的科学世界观和方法论,是关于自然、社会和人类思维发展一般规律的学说,是关于资本主义发展及其转变为社会主义以及社会主义和共产主义发展规律的学说。 2、思考并归纳意识能动作用及其表现、主观能动性与客观规律性的辩证关系。(P29-P33) (1)意识的能动作用及其表现:①辩证唯物主义在坚持物质决定意识,意识依赖于物质的同时,又承认意识对物质有能动作用。②意识的能动作用是人的意识所特有的积极反映世界和改造世界的能力和活动。表现为如下四个方面:第一,意识具有目的性和计划性。人反映世界时会表现出主体选择性。第二,意识活动具有非凡创造性。人能在思维中建构一个现实中没有的理想世界。第三,意识具有指导实践改造客观世界的作用,可变客观为现实。第四,意识具有指导、控制人的行为和生理活动的作用。 (2)主观能动性与客观规律性的辩证关系:首先,发挥人的主观能动性必须以承认规律的客观性为前提。必须尊重客观规律,认识和改造自然界,要尊重自然界的规律;认识和改造社会,要尊重社会规律。其次,只有正确发挥主观能动性,才能正确认识和利用客观规律。在尊重客观规律的基础上,要充分发挥主观能动性。否认人的主观能动性,必然导致对人的价值性的否定,导致对历史发展动力的否定。 3、当前中国一再强调走中国特色社会主义道路,试结合有关矛盾原理谈谈看法。(P42-P43) (1)矛盾的普遍性与矛盾的特殊性是辩证统一的关系的基本原理。矛盾的普遍性即矛盾的共性,矛盾的特殊性即矛盾的个性。矛盾的共性是无条件的、绝对的,矛盾的个性是有条件的、相对的。任何现实存在的事物的矛盾都是共性和个性的有机统一,共性寓于个性之中,没有离开个性的共性,也没有离开共性的个性。矛盾的共性和个性、绝对和相对的道理,是关于事物矛盾问题的精髓,是正确理解矛盾学说的关键。 (2)矛盾的普遍性和特殊性辩证关系的原理是马克思主义的普遍真理同各国的具体实际相结合的哲学基础,也是建设中国特色社会主义的哲学基础。21世纪,掌握矛盾普遍性和特殊性辩证关系的原理,把马克思主义同我国的实际和时代特征结合起来,努力推进中国特色社会主义的实践创新、理论创新和制度创新,是我们面临的重大课题。 (3)中国特色社会主义,既坚持了科学社会主义基本原则,又根据时代条

裕兴新概念学习笔记 第一册(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.

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.

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,以及由它带来的崭新开发理念,也早已伴随着这个开源框架的广泛应用,而飞入寻常百姓家。

马原前三章知识点

1,马克思主义: 生命力的根源:以实践为基础的科学性与革命性的统一; 最鲜明的政治立场:马克思主义政党的一切理论和奋斗都应该致力于实现以 劳动人民为主体的最广大人民的根本利益; 最重要的理论品质:坚持一切从实际出发,理论联系实际,实事求是,在实 践中检验真理和发展真理; 最崇高的社会理想:实现物质财富极大丰富,人们精神境界极大提高,每个 人自由而全面发展的共产主义社会; 2,物质与意识谁是本源——唯物主义与唯心主义 思维与存在有无同一性——可知论(有)与不可知论(无) 社会存在与社会意识的关系——唯物史观与唯心史观 回答世界是怎样存在的问题——辩证法(联系的发展的观点)与形而上学 (孤立的静止的观点) 是否承认对立统一学说——唯物辩证法(承认)与形而上学 唯物辩证法——是认识世界和改造世界的根本方法;(矛盾分析法是其根 本方法) 唯心主义宿命论——只强调必然性而否定偶然性; 唯心主义非宿命论——只强调偶然性而否定必然性; 辩证决定论——坚持必然性与偶然性的辩证统一; 主观唯心主义——认为人的认识是主观自生的; 客观唯心主义——人的认识是上帝的启示或绝对精神的产物; 3,运动 世界是物质的,物质是运动的,运动是物质的普遍状态; 运动是物质的根本属性与存在方式;时间和空间是物质运动的存在形式; 不运动的物质导致形而上学;无物质的运动导致唯心主义; 无条件的绝对运动和有条件的相对静止构成了事物的矛盾运动; 4,意识 意识是物质世界长期发展的产物; 是人脑的技能和属性(人脑是意识产生的物质基础); 意识的源泉是客观世界; 社会实践(劳动)在意识的产生和发展中起决定性作用; 5,量变质变规律——揭示了事物发展形式和状态(量变与质变的依次更替);

一个非常有趣的使用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(); } }

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.异常通知

《马原》各章核心知识点归纳

绪论、主干知识点 1.马克思主义的根本特征?马克思主义的精髓? 实践基础上的科学性的革命性的统一,是马克思主义的根本特征。 马克思主义的立场,观点和方法,是马克思主义的精髓。 2、马克思主义的三大组成部分及其直接理论来源? 组成部分:1.马克思主义哲学;2.马克思政治经济学;3.科学社会主义。来源:1德国古典哲学;2.英国古典政治经济学;3.法国,英国空想社会主义哲学。 3、马克思一生的两大发现? 唯物史观;剩余价值论 第一章、主干知识点 1.什么是哲学?哲学的基本问题及其内容? 哲学是系统化,理论化的世界观,又是方法论。 哲学的基本问题是思维和存在的关系问题。 内容:其一,意识和物质、思维和存在,究竟谁是世界的本源;根据对该基本问题的不同回答,哲学可划分为唯物主义和唯心主义两个对立的派系;其二思维能否认识或正确认识存在的问题;根据对该基本问题的不同回答,哲学又分为可知论和不可知论。

2.唯物主义的三种历史形态和唯心主义的两种形式? 唯物主义的三种历史形态:古代朴素唯物主义、近代形而上学唯物主义、现代唯物主义即辩证唯物主义和历史唯物主义。唯心主义两种基本形态:客观唯心主义和主观唯心主义。 3、马克思主义物质观、运动观、时空观?实事求是、解放思想、与时俱进的哲学理论依据?唯物主义运动观和唯心主义运动的区别? (1)物质的唯一特性是客观实在性,它存在于人的意识之外,所以我们必须从存在客观事实出发,也可以为人的意识所反映。世界是物质的。 (3)唯物主义运动观和唯心主义运动共同点是多层运用发展都是运动观;区别:A运动变化主题不同,唯物主义运动观主体是物质,唯心主义运动主体是精神与意识;B运动变化根源不同:唯物主义运动观在于物质,唯心主义运动根源在于观念,意识。 4.运动和静止的关系?为什么人不能两次踏入同一条河流?A运动是绝对的,静止是相对的;运动和静止相互依赖,相互渗透,相互包含,“动中有静,静中有动”。 B物质运动时间和空间的客观实在性是绝对的,物质运动时间和空间的具体特性是相对的。 5.实践及其特点、形式?A实践是人类能动地改造客观世界的物质活动B实践具有物质性、自觉能动性和社会历史性等

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 异常层次结构。

马原知识框架

生活与哲学知识框架

1 ( ( 确地预见社会发展的方向和趋势,对社会发展起积极的推动作用。 2.社会基本矛盾运动 (1)物质资料的生产方式是人类社会存在和发展的基础。 (2)基本矛盾:生产力与生产关系的矛盾;经济基础与上层建筑的矛盾。 (3)基本规律:生产关系一定要适合生产力状况的规律,上层建筑一定要适合经济基础状况的规律。 (4)社会历史发展的总趋势是前进的、上升的,发展的过程是曲折的。社会发展是在生产力和生产关系、经济基础和上层建筑的矛盾运动中,在社会基本矛盾的不断解决中实现的。 3.阶级斗争与改革 (1)在阶级社会里,社会基本矛盾的解决主要是通过阶级斗争实现的,阶级斗争是推动阶级社会发展的直接动力。 (2)社会主义社会的基本矛盾仍然是生产力与生产关系、经济基础与上层建筑之间的矛盾,这一矛盾是非对抗性的矛盾,只能通过社会主义的自

我发展、自我完善加以解决。改革是社会主义的自我完善和发展。改革的根本目的,就是使生产关系适应生产力的发展,使上层建筑适应经济基础的发展。改革是发展中国特色社会主义的强大动力。 4.人民群众是历史的创造者 (1)人民群众创造历史的作用:人民群众是社会物质财富的创造者;人民群众是精神财富的创造者;人民群众是社会变革的决定力量。 (2)群众观点的基本内容:相信人民群众自己解放自己,全心全意为人民服务,一切向人民群众负责,虚心向人民群众学习。 (3)群众路线的基本内容:一切为了群众,一切依靠群众,从群众中来,到群众中去。 5.正确的价值判断与价值选择的衡量标准 (1)必须坚持真理,遵循社会发展的客观规律,走历史的必由之路。 (2)自觉站在最广大人民的立场上,把人民群众的利益作为最高的价值标准,牢固树立为人民服务的思想,把献身人民的事业、维护人民的利益作为最高的价值标准。 6.人生价值的创造与实现 (1)在劳动和奉献中创造价值 (2)在个人与社会的统一中实现价值 (3)在砥砺自我中走向成功。实现人生价值需要充分发挥主观能动性,需要顽强拼搏、自强不息的精神;需要努力发展自己的才能,全面提高个人素质;需要有坚定的理想信念,需要有正确价值观的指引。

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/f114860138.html,/lom9357bye/article/details/69677120 通过tomcat部署项目 https://https://www.360docs.net/doc/f114860138.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包含的主要功能:

相关文档
最新文档