±à¼ÍƼö: |
ÎÄÕÂÖ÷Òª½éÉÜÁËSpring¿ò¼ÜµÄÆß´óÄ£¿é£¬Spring¿ò¼ÜÖеÄÈý´óºËÐÄ˼ÏëÊÇʲô£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
Spring¿ò¼ÜµÄÆß´óÄ£¿é
1. Spring Core£º
Core·â×°°üÊÇ¿ò¼ÜµÄ×î»ù´¡²¿·Ö£¬ÌṩIOCºÍÒÀÀµ×¢ÈëÌØÐÔ¡£ÕâÀïµÄ»ù´¡¸ÅÄîÊÇBeanFactory£¬ËüÌṩ¶ÔFactoryģʽµÄ¾µäʵÏÖÀ´Ïû³ý¶Ô³ÌÐòÐÔµ¥ÀýģʽµÄÐèÒª£¬²¢ÕæÕýµØÔÊÐíÄã´Ó³ÌÐòÂß¼ÖзÖÀë³öÒÀÀµ¹ØÏµºÍÅäÖá£
2.Spring Context:
¹¹½¨ÓÚCore·â×°°ü»ù´¡É쵀 Context·â×°°ü£¬ÌṩÁËÒ»ÖÖ¿ò¼ÜʽµÄ¶ÔÏó·ÃÎÊ·½·¨£¬ÓÐЩÏóJNDI×¢²áÆ÷¡£Context·â×°°üµÄÌØÐÔµÃ×ÔÓÚBeans·â×°°ü£¬²¢Ìí¼ÓÁ˶Թú¼Ê»¯£¨I18N£©µÄÖ§³Ö£¨ÀýÈç×ÊÔ´°ó¶¨£©£¬Ê¼þ´«²¥£¬×ÊÔ´×°ÔØµÄ·½Ê½ºÍContextµÄ͸Ã÷´´½¨£¬±ÈÈç˵ͨ¹ýServletÈÝÆ÷¡£
3£®Spring DAO:
DAO (Data Access Object)ÌṩÁËJDBCµÄ³éÏó²ã£¬Ëü¿ÉÏû³ýÈß³¤µÄJDBC±àÂëºÍ½âÎöÊý¾Ý¿â³§ÉÌÌØÓеĴíÎó´úÂë¡£
²¢ÇÒ£¬JDBC·â×°°ü»¹ÌṩÁËÒ»Öֱȱà³ÌÐÔ¸üºÃµÄÉùÃ÷ÐÔÊÂÎñ¹ÜÀí·½·¨£¬²»½ö½öÊÇʵÏÖÁËÌØ¶¨½Ó¿Ú£¬¶øÇÒ¶ÔËùÓеÄPOJOs£¨plain
old Java objects£©¶¼ÊÊÓá£
4.Spring ORM:
ORM ·â×°°üÌṩÁ˳£Óõġ°¶ÔÏó/¹ØÏµ¡±Ó³ÉäAPIsµÄ¼¯³É²ã¡£ ÆäÖаüÀ¨JPA¡¢JDO¡¢Hibernate
ºÍ iBatis ¡£ÀûÓÃORM·â×°°ü£¬¿ÉÒÔ»ìºÏʹÓÃËùÓÐSpringÌṩµÄÌØÐÔ½øÐС°¶ÔÏó/¹ØÏµ¡±Ó³É䣬Èçǰ±ßÌáµ½µÄ¼òµ¥ÉùÃ÷ÐÔÊÂÎñ¹ÜÀí¡£
5.Spring AOP:
SpringµÄ AOP ·â×°°üÌṩÁË·ûºÏAOP Alliance¹æ·¶µÄÃæÏò·½ÃæµÄ±à³ÌʵÏÖ£¬ÈÃÄã¿ÉÒÔ¶¨Ò壬ÀýÈç·½·¨À¹½ØÆ÷£¨method-interceptors£©ºÍÇе㣨pointcuts£©£¬´ÓÂß¼ÉϽ²£¬´Ó¶ø¼õÈõ´úÂëµÄ¹¦ÄÜñîºÏ£¬ÇåÎúµÄ±»·ÖÀ뿪¡£¶øÇÒ£¬ÀûÓÃsource-levelµÄÔªÊý¾Ý¹¦ÄÜ£¬»¹¿ÉÒÔ½«¸÷ÖÖÐÐΪÐÅÏ¢ºÏ²¢µ½ÄãµÄ´úÂëÖС£
6.Spring Web:
SpringÖÐµÄ Web °üÌṩÁË»ù´¡µÄÕë¶ÔWeb¿ª·¢µÄ¼¯³ÉÌØÐÔ£¬ÀýÈç¶à·½ÎļþÉÏ´«£¬ÀûÓÃServlet
listeners½øÐÐIOCÈÝÆ÷³õʼ»¯ºÍÕë¶ÔWebµÄApplicationContext¡£µ±ÓëWebWork»òStrutsÒ»ÆðʹÓÃSpringʱ£¬Õâ¸ö°üʹSpring¿ÉÓëÆäËû¿ò¼Ü½áºÏ¡£
7.Spring Web MVC:
SpringÖеÄMVC·â×°°üÌṩÁËWebÓ¦ÓõÄModel-View-Controller£¨MVC£©ÊµÏÖ¡£SpringµÄMVC¿ò¼Ü²¢²»Êǽö½öÌṩһÖÖ´«Í³µÄʵÏÖ£¬ËüÌṩÁËÒ»ÖÖÇåÎúµÄ·ÖÀëÄ£ÐÍ£¬ÔÚÁìÓòÄ£ÐÍ´úÂëºÍWeb
FormÖ®¼ä¡£²¢ÇÒ£¬»¹¿ÉÒÔ½èÖúSpring¿ò¼ÜµÄÆäËûÌØÐÔ¡£
Spring¿ò¼ÜÖеÄÈý´óºËÐÄ˼ÏëÊÇʲô
DI(ÒÀÀµ×¢Èë),IOC(¿ØÖÆ·´×ª),AOP(ÃæÏòÇÐÃæ±à³Ì)
IOCµÄ¸ÅÄîÒÔ¼°ÔÚSpringÈÝÆ÷ÖÐÈçºÎ½øÐÐIOCµÄ²Ù×÷¡£
IOC£ºInversion of Control£¬¿ØÖÆ·´×ª¡£ÔÚJava¿ª·¢ÖУ¬IOCÒâζ׎«ÄãÉè¼ÆºÃµÄÀཻ¸øÏµÍ³È¥¿ØÕâÀïд´úÂëÆ¬ÖÆ£¬¶ø²»ÊÇÔÚÄãµÄÀàÄÚ²¿¿ØÖÆ£¬Õâ³ÆÎª¿ØÖÆ·´×ª£¬¾ÍÊDZ»µ÷ÓÃÀàµÄʵÀýÓÉÔÏȵĵ÷ÓÃÀà¿ØÖÆ´´½¨¡¢Ïú»ÙÏÖÔÚת±ä³ÉÓÉSpringµÄÈÝÆ÷¹ÜÀí¡£
SpringÈÝÆ÷ÊÇÈçºÎ¹ÜÀíBeanµÄÉúÃüÖÜÆÚµÄ(ÈçBeanµÄ³õʼ»¯·½·¨£¬BeanµÄÏú»Ù·½·¨)
´´½¨£º
<property
name=¡±userDao¡± ref=¡±±»ÒýÓÃbeanµÄÃû³Æ¡± />
<property name=¡±username¡± value = ¡°×Ö·û´®¡±/> |
ÔÚSpring¿ò¼ÜÖлñÈ¡Á¬½Ó³ØÓм¸ÖÖ·½Ê½¡£
µ±JNDIÓëDBCPͬʱ´æÔÚʱ£¬»á²»»á³öÏÖÎÊÌ⣬Èç¹û²»ÄÜͬʱ´æÔڵϰ£¬Çë˵Ã÷ÔÒò
ËÄÖÖ·½Ê½£¬ÈçÏ£º
1£ºDBCPÊý¾ÝÔ´
DBCPÀà°üλÓÚ /lib/jakarta-commons/commons-dbcp.jar£¬DBCPÊÇÒ»¸öÒÀÀµJakarta
commons-pool¶ÔÏ󳨻úÖÆµÄÊý¾Ý¿âÁ¬½Ó³Ø£¬ËùÒÔÔÚÀà·¾¶Ï»¹±ØÐë°üÀ¨/lib/jakarta-commons/commons-pool.jar¡£ÏÂÃæÊÇʹÓÃDBCPÅäÖÃoracleÊý¾ÝÔ´µÄÅäÖÃÆ¬¶Ï£º
<bean id=¡±dataSource¡±
class=¡±org.apache.commons.dbcp.BasicDataSource¡±
destroy-method=¡±close¡±>
<property name=¡±driverClassName¡±
value=¡± oracle.jdbc.driver.OracleDriver ¡± />
<property name=¡±url¡± value=¡±jdbc:oracle:thin:@localhost:1521:orcl
¡± />
<property name=¡±username¡± value=¡±root¡± />
<property name=¡±password¡± value=¡±1234¡å />
</bean> |
2£ºC3P0Êý¾ÝÔ´
C3P0ÊÇÒ»¸ö¿ª·ÅÔ´´úÂëµÄJDBCÊý¾ÝԴʵÏÖÏîÄ¿£¬ËüÔÚlibĿ¼ÖÐÓëHibernateÒ»Æð·¢²¼£¬ÊµÏÖÁËJDBC3ºÍJDBC2À©Õ¹¹æ·¶ËµÃ÷µÄConnection
ºÍStatement ³Ø¡£C3P0Àà°üλÓÚ/lib/c3p0/c3p0-0.9.0.4.jar¡£ÏÂÃæÊÇʹÓÃC3P0ÅäÖÃÒ»¸öOracleÊý¾ÝÔ´£º
<bean id=¡±dataSource¡±
class=¡±com.mchange.v2.c3p0.ComboPooledDataSource¡±
destroy-method=¡±close¡±>
<property name=¡±driverClassName¡±
value=¡± oracle.jdbc.driver.OracleDriver ¡± />
<property name=¡±url¡± value=¡±jdbc:oracle:thin:@localhost:1521:orcl
¡± />
<property name=¡±username¡± value=¡±root¡± />
<property name=¡±password¡± value=¡±1234¡å />
</bean> |
3. SpringµÄÊý¾ÝԴʵÏÖÀà(DriverManagerDataSource)
Spring±¾ÉíÒ²ÌṩÁËÒ»¸ö¼òµ¥µÄÊý¾ÝԴʵÏÖÀàDriverManagerDataSource £¬ËüλÓÚorg.springframework.jdbc.datasource°üÖС£Õâ¸öÀàʵÏÖÁËjavax.sql.DataSource½Ó¿Ú£¬µ«Ëü²¢Ã»ÓÐÌṩ³Ø»¯Á¬½ÓµÄ»úÖÆ£¬Ã¿´Îµ÷ÓÃgetConnection()»ñÈ¡ÐÂÁ¬½Óʱ£¬Ö»ÊǼòµ¥µØ´´½¨Ò»¸öеÄÁ¬½Ó¡£Òò´Ë£¬Õâ¸öÊý¾ÝÔ´Àà±È½ÏÊʺÏÔÚµ¥Ôª²âÊÔ»ò¼òµ¥µÄ¶ÀÁ¢Ó¦ÓÃÖÐʹÓã¬ÒòΪËü²»ÐèÒª¶îÍâµÄÒÀÀµÀà¡£
<bean id=¡±dataSource¡±
class=¡±org.springframework.jdbc.datasource.Driver ManagerDataSource¡±
destroy-method=¡±close¡±>
<property name=¡±driverClassName¡±
value=¡± oracle.jdbc.driver.OracleDriver ¡± />
<property name=¡±url¡± value=¡±jdbc:oracle:thin:@localhost:1521:orcl
¡± />
<property name=¡±username¡± value=¡±root¡± />
<property name=¡±password¡± value=¡±1234¡å />
</bean> |
4.»ñÈ¡JNDIÊý¾ÝÔ´
Èç¹ûÓ¦ÓÃÅäÖÃÔÚ¸ßÐÔÄܵÄÓ¦Ó÷þÎñÆ÷£¨ÈçWebLogic»òWebsphereµÈ£©ÉÏ£¬ÎÒÃÇ¿ÉÄܸüÏ£ÍûʹÓÃÓ¦Ó÷þÎñÆ÷±¾ÉíÌṩµÄÊý¾ÝÔ´¡£Ó¦Ó÷þÎñÆ÷µÄÊý¾ÝԴʹÓÃJNDI¿ª·Åµ÷ÓÃÕßʹÓã¬SpringΪ´ËרÃÅÌṩÒýÓÃJNDI×ÊÔ´µÄJndiObjectFactoryBeanÀà¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÅäÖãº
<bean id=¡±dataSource¡±
class=¡±org.springframework.jndi.JndiObjectFa ctoryBean¡±>
<property name=¡±jndiName¡± value=¡±java:comp /env/jdbc/oracle¡±/>
</bean> |
ͨ¹ýjndiNameÖ¸¶¨ÒýÓõÄJNDIÊý¾ÝÔ´Ãû³Æ¡£
ÔÚʹÓÃSpringµÄJDBCTemplate²Ù×÷Êý¾Ýʱ£¬±ØÐëÒªÍùÄ£°åÖÐ×¢ÈëÄÄЩ¶ÔÏó£¬Í¬Ê±Ä£°åÒª²»ÒªÊÖ¶¯¹Ø±ÕÊý¾Ý¿âÁ¬½Ó
×¢ÈëDataSourceÊý¾ÝÔ´¶ÔÏó
²»ÒªÊÖ¶¯¹Ø±ÕÊý¾Ý¿âÁ¬½Ó£¬JdbcTemplate»á°ïÎÒÃǹرÕÊý¾Ý¿âÁ¬½Ó
JdbcTemplateµÄQueryForList·½·¨µÃµ½List¼¯ºÏ£¬ÇëÎÊList¼¯ºÏÖÐÿһ¸ö¶ÔÏóΪʲôÊý¾ÝÀàÐÍ£¬ÔÚJSPÒ³ÃæÊ¹ÓÃEL±í´ïʽÈçºÎȡֵ¡£
ÿһ¸ö¶ÔÏóΪjava.util.MapÀàÐ͵ÄÊý¾Ý,EL±í´ïʽÀïÓÃȡֵ
AOPµÄ¸ÅÄîÒÔ¼°Ê¹ÓÃAOP»úÖÆÓÐʲôºÃ´¦¡£Java±à³ÌÖÐʵÏÖAOPÓм¸ÖÖ·½Ê½
AOPµÄ¸ÅÄîÊÇAspected Oriented Programming ÃæÉíÏò·½Ãæ±à³Ì¡£
ºÃ´¦£ºAOP½«³ÌÐò·Ö½â³É¸÷¸ö·½Ãæ»òÕß˵¹Ø×¢µã¡£ÕâʹµÃ¿ÉÒÔÄ£¿é»¯£¬Ï൱ºáÏòÉÏ·ÖÇÐÁË¡£Ëü¿ÉÒÔ½â¾öOOPºÍ¹ý³Ì»¯·½·¨²»Äܹ»ºÜºÃ½â¾öµÄºáÇУ¨crosscut£©ÎÊÌ⣬È磺ÊÂÎñ¡¢°²È«¡¢ÈÕÖ¾µÈºáÇйØ×¢
ʵÏÖAOPÓм¸ÖÖ·½Ê½:
Spring 1.2°æ±¾ÖÐͨ¹ýProxyFactoryBeanÀ´ÊµÏÖaop,¼´Í¨¹ý¶¯Ì¬´úÀíÀ´ÊµÏÖµÄ,Aspect±ØÐë¼Ì³ÐMethodBeforeAdvice,MethodAfterAdviceµÈ
Spring 2.0 AOPÐèÒª¸ÄµÄÊÇFBI Õâ¸öÀ࣬¶øÇÒËüÒ²²»ÐèÒªÔÙʵÏÖijЩ½Ó¿Ú
ÈýʹÓñê×¢£¨@AspectJ£©ÊµÏÖAOP
Spring¿ò¼ÜÖеÄÊÂÎñ´¦ÀíÓм¸ÖÖ¡£Çë·Ö±ð²ûÊöÁ½ÕßµÄÇø±ð
springÌṩµÄÊÂÎñ¹ÜÀí¿ÉÒÔ·ÖΪÁ½Àࣺ±à³ÌʽµÄºÍÉùÃ÷ʽµÄ¡£
±à³ÌʽµÄ£¬±È½ÏÁé»î£¬µ«ÊÇ´úÂëÁ¿´ó£¬´æÔÚÖØ¸´µÄ´úÂë±È½Ï¶à£»
ÉùÃ÷ʽµÄ±È±à³ÌʽµÄ¸üÁé»î.
±à³ÌʽÊÂÎñµÄ×ܽӿÚÊÇʲô?ʹÓñà³ÌʽÊÂÎñÐèÒªÓõ½ÄöSpringÊÂÎñµÄºËÐÄÀà¶ÔÏó
×ܽӿÚ
PlatformTransactionManager½Ó¿Ú,
ºËÐÄÀà:
TransactionDefinition
//ÊÂÎñÊôÐÔ¶¨Òå
TranscationStatus //´ú±íÁ˵±Ç°µÄÊÂÎñ£¬¿ÉÒÔÌá½»£¬»Ø¹ö¡£
PlatformTransactionManagerºËÐĽӿڵÄ×ÓÀà |
SpringµÄÉùÃ÷ʽÊÂÎñÄܲ»ÄÜΪÆÕͨµÄÀà²úÉú´úÀí½Ó¿Ú£¬Äܲ»ÄÜÔÚ´úÂëÖÐʹÓÃTry/CatchÄܲ¶»ñÒì³££¬Èç¹û²»¿ÉÒÔ£¬Çë˵Ã÷ÔÒò
²»ÄÜ¡£SpringµÄÉùÃ÷ʽÊÂÎñΪʵÏÖÀà²úÉú´úÀí¡£²»ÄÜÔÚ´úÂëÖÐʹÓÃTry/Catch£¬ÒòΪ´úÂëÖв¶»ñÁËÒì³££¬SpringÈÝÆ÷²¶»ñ²»ÁËÒì³£¡£
ʹÓÃTransactionProxyFactoryBeanΪBean²úÉúÊÂÎñÎïÀíʱ£¬ÐèÒªÄöÊôÐÔÖµµÄÉèÖÃ:
<bean name=¡±baseTransactionProxy¡±
class=¡±org.springframework.transaction.interceptor. Transaction
ProxyFactoryBean¡±> |
¢Å<!¨C ΪÊÂÎñ´úÀíbean×¢ÈëÊÂÎñ¹ÜÀíÆ÷¨C>
<property name=¡±transactionManager¡± ref=¡±transactionManager¡±>
</property>
¢Æ<!¨C ÉèÖÃÊÂÎñÊôÐÔ¨C>
<property name=¡±transactionAttributes¡±>
<props>
¢Ç<!¨C ËùÓз½·¨²ÉÓÃrequiredµÄÊÂÎñ²ßÂÔ ->
<prop key=¡±*¡±>PROPAGATION_REQUIRED</prop>
</props>
</property>
¢È<!¨C ΪÊÂÎñ´úÀíbeanÉèÖÃÄ¿±êbean ¨C>
<property name=¡±target¡± ref=¡±userDao¡±>
</property>
</bean>
¢É<!¨C Ä¿±êbean ¨C>
<bean name=¡±userDao¡± class=¡±com.dao.userDao¡±>
<property name=¡±dataSource¡± ref=¡±dataSource¡±
/> </property>
</bean>
|
|