初学spring(一)
1.spring 在ssh 中所處的位置
??
? struts 是web框架(jsp,action,actionform)
? hibernate 是orm框架,處于數(shù)據(jù)持久層
?spring 是容器框架,配置bean和管理bean之間的關(guān)系,其中 ioc(inverse of control) 即控制反轉(zhuǎn),和di (dependency injection) 依賴(lài)注入 是spring的核心。
2.開(kāi)發(fā)一個(gè)簡(jiǎn)單spring項(xiàng)目的流程
? a.引入開(kāi)發(fā)spring項(xiàng)目所需的jar包: spring.jar(最小配置),日志包c(diǎn)ommon-logging.jar
? b.創(chuàng)建一個(gè)spring的核心配置文件 applicationContext.xml?[hibernate有核心?hibernate.cfg.xml?struts核心文件?struts-config.xml],?該文件一般放在src目錄下,
?? 該文件中引入?xsd文件?:可以從給出的案例(spring源代碼包)中拷貝一份.
????說(shuō)明:
???? ??? <!--
???????????? ??? ?bean元素的作用就是,當(dāng)框架加載的時(shí)候,容器就會(huì)自動(dòng)創(chuàng)建一個(gè)bean的實(shí)例,? 類(lèi)似 UserService us = new UserService();
??????? ???????? ?property元素的作用就是,創(chuàng)建實(shí)例后給實(shí)例的屬性注入值, 類(lèi)似 us.setName("spring");?
????????? ?-->
??? <bean id="userService" class="com.service.UserService">
??????? <property name="name">
??????????? <value>spring</value>
??????? </property>
??? </bean>?
3.創(chuàng)建實(shí)體bean,核心部分代碼
?
1 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //得到容器對(duì)象2 3 UserService us = (UserService) ac.getBean("userService"); //實(shí)例化bean
4 5 us.sayHello();
?4.Ioc(inverse of control 控制反轉(zhuǎn))? 和 Dj (dependency injection 依賴(lài)注入)
??? 控制反轉(zhuǎn): 把創(chuàng)建和維護(hù)對(duì)象的權(quán)力從代碼中轉(zhuǎn)移到spring容器(applicationContext.xml)中
????<bean id="userService" class="com.service.userServce">
??????? <property name="name" vlaue="spring"/>
??????? <property name="helloService" ref="helloService"/>
?? ?</bean>
?? ?<bean id="helloService" class="com.service.helloServce">
??????? <property name="words" vlaue="hello"/>
?? </bean>
?在這段配置中體現(xiàn)了spring的三個(gè)特點(diǎn):
??? a.配置bean
??? b.注入屬性
??? c.維護(hù)bean與bean之間的關(guān)系
??? 使用時(shí)通過(guò)getBean(bean_id) 來(lái)獲取對(duì)象實(shí)例。
? 在UserServce 類(lèi)中 有這樣一段代碼:
??? .....
??? private HelloServce helloServce;
?? ....
?? 并為其創(chuàng)建get 和 set 方法。此時(shí)如果沒(méi)有實(shí)例化 helloServce,在UserServce 類(lèi)直接調(diào)用 helloServce對(duì)象引用中的方法,肯定是報(bào)錯(cuò)的。
通過(guò)在applicationContext.xml中配置上述代碼后,則可以直接調(diào)用。這也正好體現(xiàn)了spring的特點(diǎn)所在。
?? spring的底層實(shí)現(xiàn)機(jī)制可以采用 dom4j 和 java的反射機(jī)制來(lái)實(shí)現(xiàn),結(jié)合HashMap 來(lái)維護(hù)實(shí)例對(duì)象的關(guān)系。
?? spring實(shí)際上是一個(gè)容器框架,可以維護(hù)web層,業(yè)務(wù)層,dao層(持久層)的各個(gè)組件,
?? 注:struts主要充當(dāng)web層,接管jsp/action/表單等,主要體現(xiàn)在數(shù)據(jù)輸入,數(shù)據(jù)處理以及數(shù)據(jù)的展示。有包含view以及control層。
??????? 在mvc這個(gè)概念中,model層包含 業(yè)務(wù)層,dao層以及持久層。
?
?
?
?說(shuō)明:部分內(nèi)容摘錄自網(wǎng)絡(luò)
?
轉(zhuǎn)載于:https://www.cnblogs.com/yiliweichinasoft/p/3474574.html
總結(jié)
以上是生活随笔為你收集整理的初学spring(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于visual Studio2013解
- 下一篇: MapReduce多表连接