spring3学习笔记.docx
- 文档编号:3774494
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:18
- 大小:218.06KB
spring3学习笔记.docx
《spring3学习笔记.docx》由会员分享,可在线阅读,更多相关《spring3学习笔记.docx(18页珍藏版)》请在冰豆网上搜索。
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文件里面这样写;
e)接口注入(可以忘记)
34.写了bean标签相当于new了一个这个类,因为都会注入。
35.
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. 43. 44. 45. 46. 将三个prop组装成为一个resultsinasetAdminEmails(java.util.Properties)call 做为一个参数传递进去。 将其组装成为一个set集合,传递; 47.自动装配(两种byName,byType) a)Spring_0800_IOC_AutoWire b)byName(按照名字自动匹配,默认先匹配它)
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- spring3 学习 笔记