spring3学习笔记.docx

上传人:b****4 文档编号:3774494 上传时间:2022-11-25 格式:DOCX 页数:18 大小:218.06KB
下载 相关 举报
spring3学习笔记.docx_第1页
第1页 / 共18页
spring3学习笔记.docx_第2页
第2页 / 共18页
spring3学习笔记.docx_第3页
第3页 / 共18页
spring3学习笔记.docx_第4页
第4页 / 共18页
spring3学习笔记.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

spring3学习笔记.docx

《spring3学习笔记.docx》由会员分享,可在线阅读,更多相关《spring3学习笔记.docx(18页珍藏版)》请在冰豆网上搜索。

spring3学习笔记.docx

spring3学习笔记

Spring学习笔记:

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

2.IOC/DI的概念与好处

a)inversionofcontrol

b)dependencyinjection

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.SpringJDBC

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

10.Model层或者entyty层

11.

12.更好的方法:

UserService是一个接口

13.由dao屏蔽数据库的访问层。

14.Dom4j要比jdom功能强大些。

15.配置文件初始化xml文件。

Property就是set方法;name是userserivce有一个setUserDAO,要传这个bean(u)

16.注解开发效率比较高。

17.Spring的xml根节点叫beans

18.我们要用的话,最好是装到容器里面,

19.接口只能调用属于自己的方法,在实现的类里面有方法但是在接口里没有的方法,接口是不能调用的。

什么是IOC(DI),有什么好处dependencyinjection(依赖注入)ioc(控制反转)

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

a)初始化具体值

b)装配

2.好处:

灵活装配

20.在spring2.5导入spring.jar就导入了全部需要用的jar包,但是在之后,将spring.jar包分类,可以单独导入单个需要用到的包。

21.在配置spring的时候完全可以用多个配置文件。

(多个人协作的时候很好用)

22.Xml里面ref参考了哪一个bean

23.beanFactory是一个很根的接口。

继承它的另一个接口是Applicationtext。

所以ApplicationContextfactory=newClassPathXmlApplicationContext("beans.xml");和BeanFactoryfactory=newClassPathXmlApplicationContext("beans.xml");都是可以的。

建议使用ApplicationContext

24.当factory.getBeans(“name”)的时候,返回的是object类型,可以进行强制类型转换,也可以用factory.getBeans(“name”,UserDAO.class)来指定返回的类型,。

25.面向接口编程但实际上真正注入的是它的实现;在xml文件里面配置

26.IOC容器

a)实例化具体bean

b)动态装配

27.AOP支持

a)安全检查

b)管理transaction

28.

29.Springioc配置与应用

30.FAQ不给提示:

a)window–preferences–myeclipse–xml–xmlcatalog

b)UserSpecifiedEntries–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.KeyType:

SchemaLocation

iv.Key:

http:

//www.springframework.org/schema/beans/spring-beans-3.0.xsd

31.Xsd文件放在org.springframework.benas.factory.xml包下面

32.注入类型

33.三种注入方式,spring的IOC有三种注入方式第一是根据属性注入也叫set方法注入;第二种是根据构造方法进行注入;第三种是根据注解进行注入,这种方式我认为比较好,方便,要是bean多的话,使用前两种方式会使得配置文件过于臃肿。

a)

b)Spring_0300_IOC_Injection_Type

c)setter(重要)

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

i.参数的传递可以用index来设置索引:

 

publicUserService(UserDAOuserDAO){

super();

this.userDAO=userDAO;

}

在xml文件里面这样写;

//把上面名字为u的对象注入进去.

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

34.写了bean标签相当于new了一个这个类,因为都会注入。

35.或者都可以,唯一区别就是name里面可以含有特殊字符。

36.idvs.name

a)Spring_0400_IOC_Id_Name

b)name可以用特殊字符

37.可以把简单属性配在xml文件里面;

简单属性的注入

a)Spring_0500_IOC_SimpleProperty

b)

38.Bean的生存范围:

a)

b)singleton单例(不论拿多少次都只拿到一个对象。

这是默认的)

c)proptotype每次创建新的对象。

39.集合注入

a)Spring_0700_IOC_Collections

b)很少用,不重要!

参考程序

40.

41.

42.administrator@example.org

43.support@example.org

44.development@example.org

45.

46.

将三个prop组装成为一个resultsinasetAdminEmails(java.util.Properties)call

做为一个参数传递进去。

justsomestring

将其组装成为一个set集合,传递;

47.自动装配(两种byName,byType)

a)Spring_0800_IOC_AutoWire

b)byName(按照名字自动匹配,默认先匹配它)

//当属性名字与bean的name相等时候,就自动匹配;如果没有找到就会出错。

c)byType(按照类型自动匹配)

//它会按照类型来匹配,但是如果在找到了两个同样的类型,那么就会出错。

d)其余的很少用

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

default-autowire

48.生命周期

a)Spring_0900_IOC_Life_Cycle

b)lazy-init(不重要)//当BeanFactoryfactory=newClassPathXmlApplicationContext("beans.xml");xml里面的class全部初始化,只有加上lazy-init的类不初始化;什么时候用到了什么时候初始化;大部分不用,只有当应用每次启动的时候特别慢的时候可以考虑用。

Destory()方法在ClassPathXmlAplicationContext类里面的方法,不是ApplicateionContext接口不能调用。

c)init-methoddestroy-methd两个属性表示要调用的方法,不要和prototype一起用(了解)

49.在ioc方面用annotation比xml好,但是在aop方面用xml比annotation好;

50.Annotation第一步:

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

annotation-config/>

xmlns:

context=http:

//www.springframework.org/schema/context//当前xml文件namespace中的context开头的对应的内容去哪里找。

如果引号写在下面也不会有提示。

用http开头,是最自然的不会冲突的用法,就像oracle与google发布的标准用各自的网站进行标识,就不会冲突了。

51.Dtd文件是xml文件的规范,现在规范xml文件的是xsd文件。

Xml可以引入多个xsd文件。

Xsd一般称为xml文件的schema.

52.理解xsl的概念。

指扩展样式表语言(EXtensible Stylesheet Language)。

53.需要有一个参数为空的构造方法。

54.@Autowired(不建议使用)

a)@Autowired(required=false)表示本来应该注入,但是可以没有。

不是必须的

b)@Autowired也可以放在非set方法上,spring自动帮您注入。

c)默认按类型bytype

d)如果想用byName,使用@Qualifier(name),后面加上名字

e)写在privatefield(第三种注入形式)(不建议,破坏封装)

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

g)在xml文件里配置

--injectanydependenciesrequiredbythisbean-->

--injectanydependenciesrequiredbythisbean-->

55.@Resource(重要)

c)加入:

j2ee/common-annotations.jar

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

e)可以指定特定名称

f)推荐使用

g)不足:

如果没有源码,就无法运用annotation,只能使用xml

56.JSR是JavaSpecificationRequests的缩写,意思是Java规范请求。

是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。

任何人都可以提交JSR,以向Java平台增添新的API和服务。

JSR已成为Java界的一个重要标准。

57.@Resource(重要)

a)默认的注入方式是byType;

b)加入:

j2ee/common-annotations.jar

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

d)可以指定特定名称

e)推荐使用

f)不足:

如果没有源码,就无法运用annotation,只能使用xml

58.

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xmlns:

context="http:

//www.springframework.org/schema/context"

xsi:

schemaLocation="http:

//www.springframework.org/schema/beans

http:

//www.springframework.org/schema/beans/spring-beans-3.0.xsd

http:

//www.springframework.org/schema/context

http:

//www.springframework.org/schema/context/spring-context-3.0.xsd">

component-scanbase-package="org.example"/>

在xml文件里加上这句,所有的bean配置都不需要了。

自动去org.example里去找。

59.@Component@Service@Controller@Repository,默认情况下这些类是我们的组合之一。

a)@Component当成是一个组件来使用,这样@Resource放在set方法上,就可以直接注入进去。

@Component指定名字,用@Component(“name”),推荐写上名字。

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

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

60.@Scope用注解默认是:

singleton

61.@PostConstruct=init-method;@PreDestroy=destroy-method;用注解

62.相对来说aop要比aoc复杂多了。

63.什么是AOP

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

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

b)加逻辑的方式

i.直接写死的

ii.继承(耦合性不强),没有源码的时候,我们可以用extends的方法来扩展自己需要的程序。

iii.组合代替了继承。

(在xml的bean文件里加一个逻辑)

65.动态的把一部分逻辑加到bean上面,叫aop

66.动态代理必须实现一个接口:

给我的接口里有哪些方法,我生成的代理里面就有哪些方法。

我们产生的一个代理对象里面实际上包含了一个被代理的对象。

publicclassLogInterceptorimplementsInvocationHandler{

privateObjecttarget;

publicObjectgetTarget(){

returntarget;

}

publicvoidsetTarget(Objecttarget){

this.target=target;

}

publicvoidbeforeMethod(){

System.out.println("methodstart");

}

@Override

publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)

throwsThrowable{

beforeMethod();

method.invoke(target,args);

returntarget;

}

}

@Test

publicvoidtestProxy(){

UserDAOuserDAO=newUserDAOImpl();//首先产生一个被代理的对象。

LogInterceptorli=newLogInterceptor();

li.setTarget(userDAO);//将被代理的类加入到代理类去。

UserDAOuserDAOProxy=(UserDAO)Proxy.newProxyInstance(UserDAO.class.getClassLoader(),newClass[]{UserDAO.class},li);//产生代理类。

System.out.println(userDAOProxy.getClass());

userDAOProxy.save(newUser());

}

67.好处:

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

68.Spring两种实现代理的方式

a)Annotation

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

c)beans.xml

aspectj-autoproxy/>

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

e)建立我们的拦截类

f)用@Aspect注解这个类

g)建立处理方法

h)用@Before来注解方法

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

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

k)常见的Annotation:

i.@Pointcut(命名切面,下面的可以用它的名字,加在空方法上面。

ii.@Before

iii.@AfterReturning(正常执行返回后,拦截)

iv.@AfterThrowing(拦截异常)

v.@After

vi.@Around(包围方法,用pjp.proceed()来调用方法,在这语句之前后加逻辑。

@Aspectj回在类上来实现的;需要导入aspectj包,在xml里面用

aspectj-autoproxy/>,需要加新的命名空间xsd文件。

Aspectj是专门用来实现代理的一个框架。

AspectJ是一个面向切面的框架,它扩展了Java语言。

AspectJ定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件.。

@Aspectj说明它是一个切面逻辑,可以把它切到其它方法上面去。

@Aspect

@Component

publicclassLogInterceptor{

@Before("execution(publicvoidcom.bjxst.impl.UserDAOImpl.save(com.bjxst.model.User))")

publicvoidbeforeMethod(){

System.out.println("methodstart");

}

}

还有@After,@AfterReturning

如果没有加@Component那么程序就会出错。

execution不能写错,写错了会报错,要有返回值都要写上

1.织入点语法

a)void!

void非void返回值。

b)参考文档(*..)

给切入点的集命名,是用一个方法命名的。

一定要写在一个方法上面.

上面的service下是没有实现接口的类,所以要加入cglib包。

如果类没有实现接口那么spring会直接用操作二进制码的方式,去生成代理的代码。

这样需要加一个包(cglib-nodep-2.2.2.jar)

如果实现接口就会用jdk自带的proxy来帮你产生代理,但是如果没有实现接口,就会用cglib产生接口,直接更改二进制码。

69.xml配置AOP,重点

a)把interceptor对象初始化

b)

config

i.

aspect…..

1.

pointcut

2.

before

70.好处:

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

a)Filter

b)Struts2的interceptor,也是这样用的。

71.概念:

a)JoinPoint

b)PointCut(切入点集合)

任何类的任何方法的返回任何值的。

支入点语法,需要的时候看文档学习,”..”代表无限多个层次。

..*.*(..)不管子包里有多少层,里面的任何类任何方法。

c)Aspect(切面)

d)Advice(建议,加在切入点上的建议跟加在点上的业务逻辑差不多。

e)Target

f)Weave(编织)

72.AroundAdvice

a)责任链模式

73.声明式的事务管理

74.Spring整合Hibernate

75.Spring里经常用的链接池叫dbcp

76.在beans.xml文件里面配置。

需要加上命名空间xmlns:

p=http:

//www.springframework.org/s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

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

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