spring框架案例学习文档笔记.docx

上传人:夺命阿水 文档编号:1419342 上传时间:2024-06-15 格式:DOCX 页数:78 大小:227.05KB
返回 下载 相关 举报
spring框架案例学习文档笔记.docx_第1页
第1页 / 共78页
spring框架案例学习文档笔记.docx_第2页
第2页 / 共78页
spring框架案例学习文档笔记.docx_第3页
第3页 / 共78页
spring框架案例学习文档笔记.docx_第4页
第4页 / 共78页
spring框架案例学习文档笔记.docx_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《spring框架案例学习文档笔记.docx》由会员分享,可在线阅读,更多相关《spring框架案例学习文档笔记.docx(78页珍藏版)》请在课桌文档上搜索。

1、编辑Xml文献时,没有提醒错误!未定义书签0四、注入类型(InjeCtingdependencies)Setter注入类型SetterInjection(二)构造方法COnStrUCtOrInjectionid、name五、简朴属性的注入六、错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。Bean的作用范围scopeSPring-SSH整合学习笔记八一wjt2762023-05-14七、(二)init-methoddestroy-method不要和ProtOtyPe一起用(了解)错误!未定义书签。第六课:annotation方式SPring错误!未定义

2、书签。一、 开始使用annotation配置SPring错误!未定义书签。二、 (Antnwirpd.(WJualifiar错误!未定义书签。(一) Autowired错误!未定义书签。(二) Qualifier错误!未定义书签。三、 Res。UrCe(重要、推荐)错误!未定义书签。(一) JSR-250错误!未定义书签。(二) Resource错误!未定义书签。四、 Componet错误!未定义书签。五、 ScopesPOStConStrUct、Prd)CStroy错误!未定义书签。六、 注解相应的jar包错误!未定义书签。第七课:AOP(面向切面编程)错误!未定义书签。一、 AoP概念错误

3、!未定义书签。二、 运用动态代理实现面向切面编程错误!未定义书签。第八课:SpringAOP配置选项错误!未定义书签。一、 AOP配置annotation方式错误!未定义书签。(一) 搭建annotation开发环境错误!未定义书签。(二) aspectJ类库错误!未定义书签。(三) AOP的annotation实例错误!未定义书签。(四) ASPeCtJ的专业术语错误!未定义书签。(五) 织入点语法错误!未定义书签。(六) Advice错误!未定义书签。二、 AOP配置Xinl方式错误!未定义书签.三、 AoP实现动态代理注意错误!未定义书签。第九课:DataSource错误!未定义书签。一

4、、 SPing配置数据源:错误!未定义书签。二、 注入使用错误!未定义书签。三、 dbcp.BasicDataSource错误!未定义书签。第卜课SPring整合Hiberante3错误!未定义书签。一、 Spring配置hibernate3的SessionFactory错误!未定义书签。(一)XnIl形式的SeSSionFaCtory错误!未定义书签。(二)annotation注解方式的SeSSionFaCtory错误!未定义书签。二、 引入hibernate所需要使用的jar错误!未定义书签。(一) 基本jar错误!未定义书签。(二) 加入annotation功能的jar包错误!未定义书签

5、。(三) 搭建日记环境并配置显示DD1.语句Jar包错误!未定义书签。三、 SPring整合hibernate3事务错误!未定义书签。(一) Annotation注解方式配置事务管理错误!未定义书签。(二) SPring事务选项错误!未定义书签。(三) XM1.文献形式配置SPring事务管理错误!未定义书签。四、 IiibernateTemplate错误!未定义书签。(一) HibernateTemplate错误!未定义书签。(二) H1bernateDaoSupport错误!未定义书签。第十一课:SPring整合-SSH错误!未定义书签。一、第一步:加入jar包(需要的jar包列表)错误!

6、未定义书签。四、StrUtS的读常量:错误!未定义书签.第十二课:DTO.VO错误!未定义书签。一、 DTO错误!未定义书签。二、 VO错误!未定义书签。第十二课:SSH整合存在的问题错误!未定义书签。一、 Jsp中访问Session时,Session已经关闭错误!未定义书签。二、 假如不配置事务,OPenSeSSiOnVieW出现异常错误!未定义书签.三、 中文乱码问题:错误!未定义书签。第十三课:SSH整合的jar包错误!未定义书签。一、 Struts2错误!未定义书签。二、 Hibernate3.3.2错误!未定义书签。三、 Spring错误!未定义书签.第一课:面向抽象编程本来什么类都

7、是写死的,现在是先建立一个大的标准,然后再各个实体类来实现他们的功能,然后在调用的时候,使用这个标准调用,这样,你们那个来都可以被调用。实例:USer实体类publicclassUserprivateStringusername;privateStringpassword;publicStringgetUsername()returnusername;publicvoidsetusername(Stringusername)this.username=username;pxblicStringgetPassword()returnpassword;publicvoidsetpassword(S

8、tringpassword)this.password=password;UserDao接口publicinterfaceUserDaopublicvoidsave(Useru);)UserDao的实现UserDaoImpIpublicclassUserDaoImplimplementsUserDaoOverridepublicvoidsave(Useru)System,out.printIn(usersave.);)USer管理类publicclassUserService/这里需要什么的实现,在new时,就new什么的实现,在调用方法时,会调用品体的实现类的方法privateUserDao

9、userDao=newUserDaoImpl();publicUserDaogetUserDao()returnuserDao;publicvoidSetUserDao(UserDaouserDao)this.userDao=userDao;publicvoidadd(Useru)userDao.save();/这里可以调用任务实现了USerDaO接口的SaVe方法T。)第二课:,dom的基本使用test.xml8G200158010G5003000实例类:publicclassSamplelpublicstaticvoidmain(Stringargs)throwsExceptionSAXB

10、uildersb=newSAXBUiIder();/创建-个SAXBUiIder对象Documentdoc=sb.build(Samplel.class.getClass1.oader().getResorCeAsStream(11test.xml);构造文档对象Elementroot=doc.getRootElement();/获取根元素1.iStlist=root.getChildren(disk);/取名字为disk的所有元素for(inti=0;ilist.size();i+)Elementelement=(Element)list.get(i);Stringname=element.

11、getAttributeValue(,name);/获取元素中属性为name的值Stringcapacity=element.getChildText(capacity);/取disk子元素CaPaCiEy的内容Stringdirectories=element.getChildText(directories);Stringfiles=element.getChildText(,files);System,out.printin(磁盘信息:);System.out.printIn(分区盘符:+name);System.out.printIn(“分区容量:+capacity);System,o

12、ut.printIn(,目录数:+directories);System.out.println(文献数:+files);System,out.printIn(,);第三课:模拟SPring功能由于SPring是使用XmI配置文献来实现的,所以我们一方面模拟一个XmI的配置文献如下:beans.ml实现的功能:当类初始化时,一、程序会根据此配置文献初始化文献所有的bean元素所代表的类,放入一个容器中(使用Map),然后在需要时,会根据ID值,取出这个对象;1、代码:PUbliCclassClasspathxmlApplicationContextimplementsBeanFactorypr

13、ivateMapbeans=newHaShMaPString,Object();publicClasspathxmlApplicationContext()throwsExceptionSAXBuildersb=newSAXBUiIeIer();创建一个SAXBUiIder对象Documentdoc=sb.build(ClassPathXmlApplicationContext.class.getClass1.oader().getResourceAsStream(,beans.xml);构造文档对象Elementroot=doc.getRootElement();/获取根元素/System.

14、out.printIn(root.getNameO);1.iStlist=root.getChildren(,beann);/取名字为disk的所有元素for(inti=0;ilist.sizeO;i+)Elementelement=(Element)list.get(i);Stringid=element.getAttributeValue(id);Stringclazz=element.getAttributeValue(class);System,out.printIn(id+,:+clazz);Objecto=Class.forNameclazz).newlnstance();bean

15、s.put(id,o);)publicObjectgetBean(Stringname)(returnbeans.get(name);2、测试:BeanFactoryfactory=newClasspathxmlApplicationContext();UserServiceservice=newUserService();/UserServiceservice=(UserService)factory.getBean(11userService11);UserDaouserDao=(USerDao)factory.getBean(,u);此得只需要根据工D就可以取得Bean对象来使用serv

16、ice.SetUserDao(userDao);Useru=newUser();service.add(u);当某一bean元素下存在ProPerty子元素时,则需要把这个子元素作为参数自动注入(使用SetXXX方法)到这个bean对象中1、代码:pxblicclassClassPathXmlApplIcationContexti11lementsBeanFactoryprivateMapbeans=newHaShMaPString,ObjectO;publicClasspathxmlApplicationContext()throwsExceptionfSAXBuildersb=newSAX

17、BUilder();/创建个SAXBUilder对象Documentdoc=sb.build(ClasspathxmlApplicationContext.class.getClass1.oader().getResourceAsStream(beans.xml,);构造文档对象Elementroot=doc.getRootElement();获取根元素1.iStlist=root.getChildren(ubean,);取名字为disk的所有元素for(inti=0;ilist.size();i+)Elementelement=(Element)list.get(i);Stringid=el

18、ement.getAttributeValue(,id);StringClaZZ=element.getAttributeValue(class);System,out.printIn(id+,:,+clazz);Objecto=Class.forNameclazz).newlnstance();beans.put(id,o);/*以下for循环是实现模拟SPring自动装配(注入)功能/一开始列出此bean的所有PrOPerty子元素for(ElementpropertyElement:(1.istxElemenC)element.getChildren(,roper1.y,)/获取pr。P

19、erty子元素中属性为name的值(也就是需要注入的参数名称)Stringname=propertyElement.getAttributeValue(name);获取ProPerty子元素中属性为bean的值(需要注入参数的类型),此处的bean值是已经在上面初始化好了的bean的工D了。Stringbean=propertyElement.getAttributeValue(bean);/因此此处获取指定工D的beanObjectbeanbject=beans.get(bean);/组成Set方法名称:set+第一个字母大写+其它的字母StringmethodName=set,+name.

20、substring(0rl).toUpperCase()+name.substring(1);System.out.printinCmethodName=+methodName);获取bean的Set方法,参数(方法名,参数:此参数的类型)Methodm=o.getClass().getMethod(methodName,beanbject.getClass().getlnterfaces()(0);使用反映机制,执行method方法,从而实现注入功能m.invoke(o,beanbject);)publicObjectgetBean(Stringname)returnbeans.get(na

21、me);)注意,以上有背景色的部分是实现自动装配(注入)的代码。2、测试pvblicvoidtestAdd_3()throwsExceptionBeanFactoryfactory=newCIaSSPathXmIAPPliCatiOnConteXt();UserServiceservice=(UserService)factory.getBean(nuserServicen);/以下两行代码在实现注入功能后,将不再需要,由于程序在加教时,已经帮我自动注入这个参数了。/UftsrDaoUS(SrDao=(U-erDao)factOry.Bean(u);/service.6CtU6crDaou6c

22、rDao);Useru=newUser();service.add(U);)BeanFaCtOry接口代码:publicinterfaceBeanFactorypublicObjectgetBean(Stringname);)第四课:搭建SPing的运营环境一、建立一个新的项目a)建立新的项目;b)建立需要的bean类二、建立SPring的配置文献你可以在spring文献中复制代码!一或是下面的方式可以建立个User1.ibrary搭建spring环境基本的包:SPringJar和Commons-IoggingJar四、测试代码:publicvoidtestAdd_3()throwsExcep

23、tionBeanFactoryfactory=newClassPathXmlApplicationContext(11beans.xnl11);UserServiceservice=(UserService)factory.getBean(nUserService,);Useru=newUser();service.add();注意:这里使用的Cj1.aSSPathXInlAPPIiCatiOnCOnteXt和BeanFaCtOry是SPring的,如下:importorg.springframework.beans.factory.BeanFactory;importorg.springfr

24、amework.context.support.ClassPathXmlApplicationContext;五、注意接口的使用:CIaSSPathXrnIAPPIiCatiOnConteXt类实现了APPIiCatiOnCOnteXt接口,而APPliCatiOnConteXt接口又实现了BeanFaCtOry接口,这样BeanFaCtorV是根上的接口。-般建议使用APPliCatiOnCOnteXt接口,由于:1、BeanFaCtOry:只是完毕Bean工厂的基本功能,不能完毕bean的生命周期2、ApplicationContext:除了完毕bean工厂的基本功能外,还完毕的其它的附加

25、功能(比如:bean的生命周期),也就是功能更强大这样上面的代码就是publicvoidtestAdd_3()throwsExceptionAPPIiCatiOnCOnteXtfactory=newClassPathXmlApplicationContext(beans.xml);UserServiceservice=(UserService)factory.getBean(11userService11);Useru=newUser();service.add(u);第五课:IOC(Dl)配置及应用一、 什么是100、DlIOC:InversionofControI控制反转:本来类的一些成员

26、属性(例如USerSerViCe中的USerDaO成员属性)是由当前类(USerSerViCe)自己控制,现在不是由当前类(USerSerViCe)自己控制,而是由容器(运营环境上下文、SPring)帮我们来控制。还是一种说法:本来我们自己控制是控制实现,而现在SPring是运用接口来控制的。所以我们由本来控制实现转为SPringg现在来控制接口(向上反转)作用:实例化具体的bean动态装配bean(本来是由我来控制的,现在我交给容器来控制。)DEDependencyInjeCtiOn依赖注入:一些成员属性(例如USerSerViCe中的USerDac)成员属性)依赖SPring容器来注入好处

27、:偶合性相对来减少了;此外,注入是使用配置文献来实现,这样修改来非常的方便.Dl与IoC相对来说是同样的概念。二、 编辑Xml文献时,没有提醒i. window-preferences-myeclipse-FilesandEditing-xml-xmlcatalog2、add按钮1. 1.ocation:D:share0900_Springsoftspring-framework-2.5.6distresourcesspring-beans-2.5.sdURI:file:/D:/shareX)900_Spring/soft/spring-framework-2.5.dist/resources

28、/spring-beans-2.5.xsdiii. KeyType:Schema1.ocationiv. Key:三、 注入类型(Injectingdependencies)1、SetteK重要)2、构造方法(使用的非常少)3、接口注入(可以忘掉)(一)setter注入类型SetterInjection就是在bean中使用SetXXX方法进行注入来在bean类中,成员属性需要SetXXX方法如下:publicclassUserService(privateUserDaouserDao=newUserDaoImpl();publicUserDaogetUserDao()returnuserDao

29、;)publicvoidSetUserDao(UserDaouserDao)this.userDao=userDao;publicvoidadd(Useru)userDao.save(u);)SPring配置文献如下:!一或是下面的方式一(二)构造方法ConstructorInjection一方面在bean类中需要有成员属性作为参数的构造方法代码如下:publicclassUserServiceprivateUserDaouserDao=newUserDaoImpl();publicUserService(UserDaouserDao)super();this.userDao=userDao;

30、)publicUserDaogetUserDao()returnuserDao;publicvoidSetUserDao(UserDaouserDao)this.userDao=userDao;publicvoidadd(Useru)userDao.save(u);)注意:背景较深的代码为构造方法,带有参数的构造方法!需要注意的:使用表达,重新new一个bean然后注入进去,使用表达,使用已经new好的bean,这是只是引用它。-使用和其子标签或进行构造方法注入当构造方法注入时,构造方法中有多个参数时,可以使用以下两种方式注入:bean代码rpublicclassEXamPIeBeanpriv

31、ateintyears;privateStringUltimateAnswer;publicExampleBean(intyears,StringUltimateAnswer)this.years=years;this.UltimateAnswer=UltimateAnswer;)1、参数类型方式进行区分参数:xml配置文献:注意:这斤就.是咨数类型为int的注入7500000,而参数类型为java.lang.String的参总3注入“42”,但这个方法不适合多个参数是相同的类型。2、运用索引进行区分参数XmI配置文献注意:index=。的注入到第一个参数,index=1的注入到第二个参数”构

32、造方法的注入不方便,所以我们需要使用Setter注入方式。四、 id、name注Xml配置文献中标签中的属性名称如下:或Cbeanname=uclass=com.wjt276.dao.impl.UserDaoIinpl以上标签中的属性id与name作用是同样,唯一的区别,id中不可以具有特殊字符,而name中可以有特殊字符五、简朴属性的注入当bean中存在简朴属性时的注入方式:bean代码如下:publicclassUserDaoImplimplementsUserDaoprivateintdaold;privateStringdaoStatus;publicintgetDaoId()retu

33、rndaold;publicvoidSetDaoId(intdaold)this.daold=daold;publicStringgetDaoStatus()returndaoStatus;publicvoidSetDaoStatus(StringdaoStatus)this.daoStatus=daoStatus;Overridepublicvoidsave(User)System.out.printin(usersave)XmI配置文献如下:good直接使用ValUe属性或是value子标签来注入六、Bean的作用范围scope在SPring配置文献中的标签可以指定bean的作用范围运用标

34、签中的SCoPe属性来指定scope:1、SingIetOn单例:每次取出的bean都是同一个bean。默认就是这个2、PrOtOtyPe原型:每次取的bean时,都会重新创建一个新的bean3、 request4、 session5、 globalsession实例:注意:只有SPring与Web框架结合时才会使用request/SeSSiOn/globalsession,但也非常少用,由于其它框架已有功能非常强大的SCQPe了(例如:StrUtS的SCOPe)七、集合注入很少用,不重要,参考程序alistelementfollowedbyareferenceanentryjustsomes

35、tringarefjstsomestring八、自动装配autowire含义:在bean注入时不需要我们来指定注入哪个具体的bean,而SPring容器会根据我的使用autowire属性来拟定自动装配功能。autowire(S:1、autodetect;2、byName:根据bean中成员属性的名称来自动装配3、byType:根据bean中成员属性的类型来自动装配。4、Constaractor5、default:会根据beans标签中的default-autowire属性来进行自动装配的方式6、no(默认就是这个,需要手动指定注入那个bean)()byName根据bean中成员属性的名称来自动

36、装配。bean代码:UserDaoImplpublicclassUserDaoImplimplementsUserDaoprivateintdaold;publicintgetDaoId()returndaold;publicvoidSetDaoId(intdaold)this.daold=daold;OverridepublicStringtoString()return*daold=,+this.daold;USerSerViCe类publicclassUserServiceprivateUserDaouserDao=newUserDaoImpl();publicUserDaogetUserDao()returnuserDao;this.serDao=serDao;publicvoidadd(Useru)userDao.save(u);SPring的配置文献beanname=nUserServiceclass=,con.wjt276.service.UserServicescope=prototypeaur.owire=byName测试代码:publicvoidtestAdd|()throwsExceptionApplicationContextfactory=newClasspathxmlApplicationContext(beans.xml);

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号