資源描述:
《傳智播客springppt黎活明》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、北京傳智播客教育www.itcast.cnSpring企業(yè)開發(fā)講師:黎活明北京傳智播客教育www.itcast.cnSpring是什么Spring是一個(gè)開源的控制反轉(zhuǎn)(InversionofControl,IoC)和面向切面(AOP)的容器框架.它的主要目得是簡(jiǎn)化企業(yè)開發(fā).北京傳智播客教育www.itcast.cnIOC控制反轉(zhuǎn)publicclassPersonServiceBean{privatePersonDaopersonDao=newPersonDaoBean();publicvoidsave(Personpers
2、on){personDao.save(person);}}PersonDaoBean是在應(yīng)用內(nèi)部創(chuàng)建及維護(hù)的。所謂控制反轉(zhuǎn)就是應(yīng)用本身不負(fù)責(zé)依賴對(duì)象的創(chuàng)建及維護(hù),依賴對(duì)象的創(chuàng)建及維護(hù)是由外部容器負(fù)責(zé)的。這樣控制權(quán)就由應(yīng)用轉(zhuǎn)移到了外部容器,控制權(quán)的轉(zhuǎn)移就是所謂反轉(zhuǎn)。北京傳智播客教育www.itcast.cn依賴注入(DependencyInjection)當(dāng)我們把依賴對(duì)象交給外部容器負(fù)責(zé)創(chuàng)建,那么PersonServiceBean類可以改成如下:publicclassPersonServiceBean{privatePers
3、onDaopersonDao;//通過構(gòu)造器參數(shù),讓容器把創(chuàng)建好的依賴對(duì)象注入進(jìn)PersonServiceBean,當(dāng)然也可以使用setter方法進(jìn)行注入。publicPersonServiceBean(PersonDaopersonDao){this.personDao=personDao;}publicvoidsave(Personperson){personDao.save(person);}}所謂依賴注入就是指:在運(yùn)行期,由外部容器動(dòng)態(tài)地將依賴對(duì)象注入到組件中。北京傳智播客教育www.itcast.cn為何要使用S
4、pring至少在我看來,在項(xiàng)目中引入spring立即可以帶來下面的好處降低組件之間的耦合度,實(shí)現(xiàn)軟件各層之間的解耦??梢允褂萌萜魈峁┑谋姸喾?wù),如:事務(wù)管理服務(wù)、消息服務(wù)等等。當(dāng)我們使用容器管理事務(wù)時(shí),開發(fā)人員就不再需要手工控制事務(wù).也不需處理復(fù)雜的事務(wù)傳播。容器提供單例模式支持,開發(fā)人員不再需要自己編寫實(shí)現(xiàn)代碼。容器提供了AOP技術(shù),利用它很容易實(shí)現(xiàn)如權(quán)限攔截、運(yùn)行期監(jiān)控等功能。容器提供的眾多輔作類,使用這些類能夠加快應(yīng)用的開發(fā),如:JdbcTemplate、HibernateTemplate。Spring對(duì)于主流的應(yīng)用
5、框架提供了集成支持,如:集成Hibernate、JPA、Struts等,這樣更便于應(yīng)用的開發(fā)。ControllerServiceDAO北京傳智播客教育www.itcast.cn使用Spring的好處當(dāng)使用spring時(shí),我們可以使用容器提供的眾多服務(wù)北京傳智播客教育www.itcast.cn如果使用Spring,我們就不再需要手工控制事務(wù)Hibernate的事務(wù)操作:publicvoidsave(){Sessionsession=sessionFactory.getCurrentSession();session.begi
6、nTransaction();Infoinfo=newInfo("傳智播客");info.setContent("國(guó)內(nèi)實(shí)力最強(qiáng)的java培訓(xùn)機(jī)構(gòu)");session.save(info);session.getTransaction().commit();}JDBC的事務(wù)操作:Connectionconn=null;try{.......conn.setAutoCommit(false);Statementstmt=conn.createStatement();stmt.executeUpdate("updateperso
7、nwherename='葉天'");conn.commit();.....}catch(Exceptione){conn.rollback();}finally{conn.close();}北京傳智播客教育www.itcast.cn另外,如果使用spring,我們也不需要處理復(fù)雜的事務(wù)傳播行為publicvoidpayment(){Bean1.update();//更新金額Bean2.save();//記錄操作日志}如果我們不使用Spring,針對(duì)下面這兩種業(yè)務(wù)需求,我們?cè)撊绾巫???種可能的業(yè)務(wù)需求:要求Bean1.up
8、date()和Bean2.save()在同一個(gè)事務(wù)中執(zhí)行。第2種可能的業(yè)務(wù)需求:要求不管Bean1.update()的事務(wù)是否成功,都需要記錄操作日志。publicclassBean1{publicvoidupdate(){//注意:下面省略了一些代碼Connectionconn=null;conn.s