ÅäºñÀÇ ½ºÇÁ¸µ 3.1 Vol. 2 ½ºÇÁ¸µÀÇ ±â¼ú°ú ¼±ÅÃ
XML ´ë½Å ÀÚ¹ÙÄڵ带 ÀÌ¿ëÇؼ ½ºÇÁ¸µÀ» °³¹ßÇÒ ¼ö ÀÖ´Â ÃֽŠºó ¼³Á¤ ±â¹ýºÎÅÍ Æí¸®ÇÑ RESTful ½ºÅ¸ÀÏÀÇ À¥ ÄÁÆ®·Ñ·¯ ÀÛ¼º ±â¹ý±îÁö ½ºÇÁ¸µ 3.0°ú ½ºÇÁ¸µ 3.1ÀÇ ÃֽŠ±â¼úÀ» »ó¼¼ÇÏ°Ô ¼Ò°³ÇÏ°í ±× Áß¿¡¼ Àڽſ¡°Ô ¸Â´Â ÃÖÀûÀÇ ±â¼úÀ» ¼±ÅÃÇÏ°í Á¶ÇÕÇÒ ¼ö ÀÖ´Â ±âÁØ°ú È°¿ëÀü·«À» ´Ù·é´Ù.
¡ºÅäºñÀÇ ½ºÇÁ¸µ 3.1¡»Àº ½ºÇÁ¸µÀ» óÀ½ Á¢Çϰųª ½ºÇÁ¸µÀ» °æÇèÇßÁö¸¸ ½ºÇÁ¸µÀÌ ¾î·Æ°Ô ´À²¸Áö´Â °³¹ßÀÚºÎÅÍ ½ºÇÁ¸µÀ» È°¿ëÇÑ ¾ÆÅ°ÅØó¸¦ ¼³°èÇÏ°í ÇÁ·¹ÀÓ¿öÅ©¸¦ °³¹ßÇÏ·Á°í ÇÏ´Â ¾ÆÅ°ÅØÆ®¿¡ À̸£±â±îÁö ¸ðµÎ Âü°íÇÒ ¼ö ÀÖ´Â ½ºÇÁ¸µ ¿Ïº® ¹ÙÀ̺íÀÌ´Ù
´ëÇѹα¹ ÀüÀÚÁ¤ºÎ Ç¥ÁØ ÇÁ·¹ÀÓ¿öÅ© ½ºÇÁ¸µÀ» ¼³¸íÇÏ´Â No. 1 º£½ºÆ®¼¿·¯!
È£ÁÖÀÇ IT¼ºñ½º ±â¾÷ÀÎ ÀÌÇÁ¸±ÀÇ ´ëÇ¥ ÄÁ¼³ÅÏÆ®. ¿£ÅÍÇÁ¶óÀÌÁî ¿ÀǼҽº Ä¿¹Â´ÏƼÀÎ ¿ÀǽõåÀÇ ´ëÇ¥¿Í Çѱ¹½ºÇÁ¸µ»ç¿ëÀÚ¸ðÀÓ(KSUG)ÀÇ °øµ¿¼³¸³ÀÚÀ̱⵵ ÇÏ´Ù. 8ºñÆ® ÄÄÇ»ÅÍ ½ÃÀý ÇÁ·Î±×·¡¹ÖÀÇ ¸Å·Â¿¡ ºüÁ® 10¿© ³â°£ Ãë¹Ì·Î ÇÁ·Î±×·¡¹ÖÀ» Áñ°Ü¿À´Ù Àü¹® °³¹ßÀÚÀÇ ±æ·Î µé¾î¼¼ 17³â° ¼ÒÇÁÆ®¿þ¾î °³¹ß°ú ±³À°, ÄÁ¼³Æà ÀÏÀ» ÇØ¿À°í ÀÖ´Ù. 2004³âºÎÅÍ ½ºÇÁ¸µÀ» ÀÌ¿ëÇؼ ±â¾÷°ú Çб³, ÀÎÅÍ³Ý ¼ºñ½º ¾÷üÀÇ ½Ã½ºÅÛÀ» °³¹ßÇØ¿Ô°í ½ºÇÁ¸µÀ» ±â¹ÝÀ¸·Î ÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ© Á¦ÀÛ ÄÁ¼³Æðú ½ºÇÁ¸µ °³¹ßÀÚ ±³À°À» ÇØ¿À°í ÀÖ´Ù. JCO ÄÁÆÛ·±½º¿¡¼ ¼¼ Â÷·Ê ½ºÇÁ¸µÀ» ÁÖÁ¦·Î ¹ßÇ¥Çß°í ±â¹¦, ÀÌÇÁ¸±, KSUG µîÀ» ÅëÇØ ½ºÇÁ¸µ ¼¼¹Ì³ª¸¦ ÁøÇàÇϱ⵵ Çß´Ù. ½ºÇÁ¸µ°ú ¿ÀǼҽº ±â¼ú¿¡ °ü·ÃµÈ Á¤º¸¿Í °æÇèÀ» °øÀ¯ÇÏ´Â ºí·Î±×(toby.epril.com)¸¦ ¿î¿µÇÏ°í ÀÖ´Ù.
1Àå IoC ÄÁÅ×ÀÌ³Ê¿Í DI
1.1 IoC ÄÁÅ×À̳Ê: ºó ÆÑÅ丮¿Í ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ®
1.1.1 IoC ÄÁÅ×À̳ʸ¦ ÀÌ¿ëÇØ ¾ÖÇø®ÄÉÀÌ¼Ç ¸¸µé±â
POJO Ŭ·¡½º
¼³Á¤ ¸ÞŸÁ¤º¸
1.1.2 IoC ÄÁÅ×À̳ÊÀÇ Á¾·ù¿Í »ç¿ë ¹æ¹ý
StaticApplicationContext
GenericApplicationContext
GenericXmlApplicationContext
WebApplicationContext
1.1.3 IoC ÄÁÅ×ÀÌ³Ê °èÃþ±¸Á¶
ºÎ¸ð ÄÁÅؽºÆ®¸¦ ÀÌ¿ëÇÑ °èÃþ±¸Á¶ È¿°ú
ÄÁÅؽºÆ® °èÃþ±¸Á¶ Å×½ºÆ®
1.1.4 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ IoC ÄÁÅ×ÀÌ³Ê ±¸¼º
À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÁÅؽºÆ® °èÃþ±¸Á¶
À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÁÅؽºÆ® ±¸¼º ¹æ¹ý
·çÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ® µî·Ï
¼ºí¸´ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ® µî·Ï
1.2 IoC/DI¸¦ À§ÇÑ ºó ¼³Á¤ ¸ÞŸÁ¤º¸ ÀÛ¼º
1.2.1 ºó ¼³Á¤ ¸ÞŸÁ¤º¸
ºó ¼³Á¤ ¸ÞŸÁ¤º¸ Ç׸ñ
1.2.2 ºó µî·Ï ¹æ¹ý
XML: ¡¶bean¡· ű×
XML: ³×ÀÓ½ºÆäÀ̽º¿Í Àü¿ë ű×
ÀÚµ¿ÀνÄÀ» ÀÌ¿ëÇÑ ºó µî·Ï: ½ºÅ×·¹¿ÀŸÀÔ ¾Ö³ëÅ×À̼ǰú ºó ½ºÄ³³Ê
ÀÚ¹Ù Äڵ忡 ÀÇÇÑ ºó µî·Ï: @Configuration Ŭ·¡½ºÀÇ @Bean ¸Þ¼Òµå
ÀÚ¹Ù Äڵ忡 ÀÇÇÑ ºó µî·Ï: ÀÏ¹Ý ºó Ŭ·¡½ºÀÇ @Bean ¸Þ¼Òµå
ºó µî·Ï ¸ÞŸÁ¤º¸ ±¸¼º Àü·«
1.2.3 ºó ÀÇÁ¸°ü°è ¼³Á¤ ¹æ¹ý
XML: ¡¶property¡·, ¡¶constructor-arg¡·
XML: ÀÚµ¿¿ÍÀ̾
XML: ³×ÀÓ½ºÆäÀ̽º¿Í Àü¿ë ű×
¾Ö³ëÅ×À̼Ç: @Resource
¾Ö³ëÅ×À̼Ç: @Autowired/@Inject
@Autowired¿Í getBean(), ½ºÇÁ¸µ Å×½ºÆ®
ÀÚ¹Ù Äڵ忡 ÀÇÇÑ ÀÇÁ¸°ü°è ¼³Á¤
ºó ÀÇÁ¸°ü°è ¼³Á¤ Àü·«
1.2.4 ÇÁ·ÎÆÛƼ °ª ¼³Á¤ ¹æ¹ý
¸ÞŸÁ¤º¸ Á¾·ù¿¡ µû¸¥ °ª ¼³Á¤ ¹æ¹ý
PropertyEditor¿Í ConversionService
Ä÷º¼Ç
Null°ú ºó ¹®ÀÚ¿
ÇÁ·ÎÆÛƼ ÆÄÀÏÀ» ÀÌ¿ëÇÑ °ª ¼³Á¤
1.2.5 ÄÁÅ×À̳ʰ¡ ÀÚµ¿µî·ÏÇÏ´Â ºó
ApplicationContext, BeanFactory
ResourceLoader, ApplicationEventPublisher
systemProperties, systemEnvironment
1.3 ÇÁ·ÎÅäŸÀÔ°ú ½ºÄÚÇÁ
1.3.1 ÇÁ·ÎÅäŸÀÔ ½ºÄÚÇÁ
ÇÁ·ÎÅäŸÀÔ ºóÀÇ »ý¸íÁÖ±â¿Í Á¾¼Ó¼º
ÇÁ·ÎÅäŸÀÔ ºóÀÇ ¿ëµµ
DI¿Í DL
ÇÁ·ÎÅäŸÀÔ ºóÀÇ DL Àü·«
1.3.2 ½ºÄÚÇÁ
½ºÄÚÇÁÀÇ Á¾·ù
½ºÄÚÇÁ ºóÀÇ »ç¿ë ¹æ¹ý
Ä¿½ºÅÒ ½ºÄÚÇÁ¿Í »óŸ¦ ÀúÀåÇÏ´Â ºó »ç¿ëÇϱâ
1.4 ±âŸ ºó ¼³Á¤ ¸ÞŸÁ¤º¸
1.4.1 ºó À̸§
XML ¼³Á¤¿¡¼ÀÇ ºó ½Äº°ÀÚ¿Í º°Äª
¾Ö³ëÅ×À̼ǿ¡¼ÀÇ ºó À̸§
1.4.2 ºó »ý¸íÁֱ⠸޼ҵå
ÃʱâÈ ¸Þ¼Òµå
Á¦°Å ¸Þ¼Òµå
1.4.3 ÆÑÅ丮 ºó°ú ÆÑÅ丮 ¸Þ¼Òµå
1.5 ½ºÇÁ¸µ 3.1ÀÇ Ioc ÄÁÅ×ÀÌ³Ê¿Í DI
1.5.1 ºóÀÇ ¿ªÇÒ°ú ±¸ºÐ
ºóÀÇ Á¾·ù
ÄÁÅ×ÀÌ³Ê ÀÎÇÁ¶ó ºó°ú Àü¿ë ű×
ºóÀÇ ¿ªÇÒ
1.5.2 ÄÁÅ×ÀÌ³Ê ÀÎÇÁ¶ó ºóÀ» À§ÇÑ ÀÚ¹Ù ÄÚµå ¸ÞŸÁ¤º¸
IoC/DI ¼³Á¤ ¹æ¹ýÀÇ ¹ßÀü
ÀÚ¹Ù Äڵ带 ÀÌ¿ëÇÑ ÄÁÅ×ÀÌ³Ê ÀÎÇÁ¶ó ºó µî·Ï
1.5.3 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ »õ·Î¿î IoC ÄÁÅ×ÀÌ³Ê ±¸¼º
1.5.4 ·±Å¸ÀÓ È¯°æ Ãß»óÈ¿Í ÇÁ·ÎÆÄÀÏ
ȯ°æ¿¡ µû¸¥ ºó ¼³Á¤Á¤º¸ º¯°æ Àü·«°ú ÇÑ°è
·±Å¸ÀÓ È¯°æ°ú ÇÁ·ÎÆÄÀÏ
È°¼º ÇÁ·ÎÆÄÀÏ ÁöÁ¤ ¹æ¹ý
ÇÁ·ÎÆÄÀÏ È°¿ë Àü·«
1.5.5 ÇÁ·ÎÆÛƼ ¼Ò½º
ÇÁ·ÎÆÛƼ
½ºÇÁ¸µ¿¡¼ »ç¿ëµÇ´Â ÇÁ·ÎÆÛƼÀÇ Á¾·ù
ÇÁ·ÎÆÄÀÏÀÇ ÅëÇÕ°ú Ãß»óÈ
ÇÁ·ÎÆÛƼ ¼Ò½ºÀÇ »ç¿ë
@PropertySource¿Í ÇÁ·ÎÆÛƼ ÆÄÀÏ
À¥ ȯ°æ¿¡¼ »ç¿ëµÇ´Â ÇÁ·ÎÆÛƼ ¼Ò½º¿Í ÇÁ·ÎÆÛƼ ¼Ò½º ÃʱâÈ ¿ÀºêÁ§Æ®
1.6 Á¤¸®
2Àå µ¥ÀÌÅÍ ¾×¼¼½º ±â¼ú
2.1 °øÅë °³³ä
2.1.1 DAO ÆÐÅÏ
DAO ÀÎÅÍÆäÀ̽º¿Í DI
¿¹¿Üó¸®
2.1.2 ÅÛÇø´°ú API
2.1.3 DataSource
ÇнÀ Å×½ºÆ®¿Í ÅëÇÕ Å×½ºÆ®¸¦ À§ÇÑ DataSource
¿ÀǼҽº ¶Ç´Â »ó¿ë DB Ä¿³Ø¼Ç Ç®
JDNI/WAS DB Ç®
2.2 JDBC
2.2.1 ½ºÇÁ¸µ JDBC ±â¼ú°ú µ¿ÀÛ¿ø¸®
½ºÇÁ¸µÀÇ JDBC Á¢±Ù ¹æ¹ý
½ºÇÁ¸µ JDBC°¡ ÇØÁÖ´Â ÀÛ¾÷
2.2.2 SimpleJdbcTemplate
SimpleJdbcTemplate »ý¼º
SQL ÆĶó¹ÌÅÍ
SQL ½ÇÇà ¸Þ¼Òµå
SQL Á¶È¸ ¸Þ¼Òµå
SQL ¹èÄ¡ ¸Þ¼Òµå
2.2.3 SimpleJdbcInsert
SimpleJdbcInsert »ý¼º
SimpleJdbcInsert ½ÇÇà
2.2.4 SimpleJdbcCall
SimpleJdbcCall »ý¼º
SimpleJdbcCall ½ÇÇà
2.2.5 ½ºÇÁ¸µ JDBC DAO
2.3 iBatis SqlMaps
2.3.1 SqlMapClient »ý¼º
iBatis ¼³Á¤ÆÄÀÏ°ú ¸ÅÇÎÆÄÀÏ
SqlMapClient¸¦ À§ÇÑ SqlMapClientFactoryBean µî·Ï
2.3.2 SqlMapClientTemplate
µî·Ï, ¼öÁ¤, »èÁ¦
Á¶È¸
SqlMapClientCallback
2.4 JPA
2.4.1 EntityManagerFactory µî·Ï
LocalEntityManagerFactoryBean
JavaEE 5 ¼¹ö°¡ Á¦°øÇÏ´Â EntityManagerFactory
LocalContainerEntityManagerFactoryBean
Æ®·£Àè¼Ç ¸Å´ÏÀú
2.4.2 EntityManager¿Í JpaTemplate
JpaTemplate
¾ÖÇø®ÄÉÀÌ¼Ç °ü¸® EntityManager¿Í @PersistenceUnit
ÄÁÅ×ÀÌ³Ê °ü¸® EntityManager¿Í @PersistenceContext
@PersistenceContext¿Í È®ÀåµÈ Æ۽ýºÅϽº ÄÁÅؽºÆ®
JPA ¿¹¿Ü º¯È¯
JPA ¿¹¿Ü º¯È¯ AOP
2.5 ÇÏÀ̹ö³×ÀÌÆ®
2.5.1 SessionFactory µî·Ï
LocalSessionFactoryBean
AnnotationSessionFactoryBean
Æ®·£Àè¼Ç ¸Å´ÏÀú
2.5.2 Session°ú HibernateTemplate
HibernateTemplate
SessionFactory.getCurrentSession()
2.6 Æ®·£Àè¼Ç
2.6.1 Æ®·£Àè¼Ç Ãß»óÈ¿Í µ¿±âÈ
PlatformTransactionManager
Æ®·£Àè¼Ç ¸Å´ÏÀúÀÇ Á¾·ù
2.6.2 Æ®·£Àè¼Ç °æ°è¼³Á¤ Àü·«
Äڵ忡 ÀÇÇÑ Æ®·£Àè¼Ç °æ°è¼³Á¤
¼±¾ðÀû Æ®·£Àè¼Ç °æ°è¼³Á¤
ÇÁ·Ï½Ã ¸ðµå: ÀÎÅÍÆäÀ̽º¿Í Ŭ·¡½º
AOP ¹æ½Ä: ÇÁ·Ï½Ã¿Í AspectJ
2.6.3 Æ®·£Àè¼Ç ¼Ó¼º
Æ®·£Àè¼Ç ÀüÆÄ: propagation
Æ®·£Àè¼Ç °Ý¸®¼öÁØ: isolation
Æ®·£Àè¼Ç Á¦Çѽð£: timeout
ÀбâÀü¿ë Æ®·£Àè¼Ç: read-only, readOnly
Æ®·£Àè¼Ç ·Ñ¹é ¿¹¿Ü: rollback-for, rollbackFor, rollbackForClassName
Æ®·£Àè¼Ç Ä¿¹Ô ¿¹¿Ü: no-rollback-for, noRollbackFor, noRollbackForClassName
2.6.4 µ¥ÀÌÅÍ ¾×¼¼½º ±â¼ú Æ®·£Àè¼ÇÀÇ ÅëÇÕ
Æ®·£Àè¼Ç ¸Å´ÏÀúº° Á¶ÇÕ °¡´É ±â¼ú
ORM°ú ºñ ORM DAO¸¦ ÇÔ²² »ç¿ëÇÒ ¶§ÀÇ ÁÖÀÇ»çÇ×
2.6.5 JTA¸¦ ÀÌ¿ëÇÑ ±Û·Î¹ú/ºÐ»ê Æ®·£Àè¼Ç
µ¶¸³Çü JTA Æ®·£Àè¼Ç ¸Å´ÏÀú
WAS Æ®·£Àè¼Ç ¸Å´ÏÀúÀÇ °í±Þ ±â´É »ç¿ëÇϱâ
2.7 ½ºÇÁ¸µ 3.1ÀÇ µ¥ÀÌÅÍ ¾×¼¼½º ±â¼ú
2.7.1 persistence.xml ¾øÀÌ JPA »ç¿ëÇϱâ
2.7.2 ÇÏÀ̹ö³×ÀÌÆ® 4 Áö¿ø
LocalSessionFactoryBean
LocalSessionFactoryBuilder
2.7.3 @EnableTransactionManager 295
2.8 Á¤¸®
3Àå ½ºÇÁ¸µ À¥ ±â¼ú°ú ½ºÇÁ¸µ MVC
3.1 ½ºÇÁ¸µÀÇ À¥ ÇÁ·¹Á¨Å×ÀÌ¼Ç °èÃþ ±â¼ú
3.1.1 ½ºÇÁ¸µ¿¡¼ »ç¿ëµÇ´Â À¥ ÇÁ·¹ÀÓ¿öÅ©ÀÇ Á¾·ù
½ºÇÁ¸µ À¥ ÇÁ·¹ÀÓ¿öÅ©
½ºÇÁ¸µ Æ÷Æ®Æú¸®¿À À¥ ÇÁ·¹ÀÓ¿öÅ©
½ºÇÁ¸µÀ» ±â¹ÝÀ¸·Î µÎÁö ¾Ê´Â À¥ ÇÁ·¹ÀÓ¿öÅ©
3.1.2 ½ºÇÁ¸µ MVC¿Í DispatcherServlet Àü·«
DispatcherServlet°ú MVC ¾ÆÅ°ÅØó
DispatcherServletÀÇ DI °¡´ÉÇÑ Àü·«
3.2 ½ºÇÁ¸µ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç È¯°æ ±¸¼º
3.2.1 °£´ÜÇÑ ½ºÇÁ¸µ À¥ ÇÁ·ÎÁ§Æ® »ý¼º
·çÆ® À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ®
¼ºí¸´ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ® µî·Ï
½ºÇÁ¸µ À¥ ÇÁ·ÎÁ§Æ® °ËÁõ
3.2.2 ½ºÇÁ¸µ À¥ ÇнÀ Å×½ºÆ®
¼ºí¸´ Å×½ºÆ®¿ë ¸ñ ¿ÀºêÁ§Æ®
Å×½ºÆ®¸¦ À§ÇÑ DispatcherServlet È®Àå
ConfigurableDispatcherServletÀ» ÀÌ¿ëÇÑ ½ºÇÁ¸µ MVC Å×½ºÆ®
Æí¸®ÇÑ DispatcherServlet Å×½ºÆ®¸¦ À§ÇÑ AbstractDispatcherServletTest
3.3 ÄÁÆ®·Ñ·¯
3.3.1 ÄÁÆ®·Ñ·¯ÀÇ Á¾·ù¿Í Çڵ鷯 ¾î´ðÅÍ
Servlet°ú SimpleServletHandlerAdapter
HttpRequestHandler¿Í HttpRequestHandlerAdapter
Controller¿Í SimpleControllerHandlerAdapter
AnnotationMethodHandlerAdapter
3.3.2 Çڵ鷯 ¸ÅÇÎ
BeanNameUrlHandlerMapping
ControllerBeanNameHandlerMapping
ControllerClassNameHandlerMapping
SimpleUrlHandlerMapping
DefaultAnnotationHandlerMapping
±âŸ °øÅë ¼³Á¤Á¤º¸
3.3.3 Çڵ鷯 ÀÎÅͼÁÅÍ
HandlerInterceptor
Çڵ鷯 ÀÎÅͼÁÅÍ Àû¿ë
3.3.4 ÄÁÆ®·Ñ·¯ È®Àå
Ä¿½ºÅÒ ÄÁÆ®·Ñ·¯ ÀÎÅÍÆäÀ̽º¿Í Çڵ鷯 ¾î´ðÅÍ °³¹ß
3.4 ºä
3.4.1 ºä
InternalResourceView¿Í JstlView
RedirectView
VelocityView, FreeMarkerView
MarshallingView
AbstractExcelView, AbstractJExcelView, AbstractPdfView
AbstractAtomFeedView, AbstractRssFeedView
XsltView, TilesView, AbstractJasperReportsView
MappingJacksonJsonView
3.4.2 ºä ¸®Á¹¹ö
InternalResourceViewResolver
VelocityViewResolver, FreeMarkerViewResolver
ResourceBundleViewResolver, XmlViewResolver, BeanNameViewResolver
ContentNegotiatingViewResolver
3.5 ±âŸ Àü·«
3.5.1 Çڵ鷯 ¿¹¿Ü ¸®Á¹¹ö
AnnotationMethodHandlerExceptionResolver
ResponseStatusExceptionResolver
DefaultHandlerExceptionResolver
SimpleMappingExceptionResolver
3.5.2 Áö¿ªÁ¤º¸ ¸®Á¹¹ö
3.5.3 ¸ÖƼÆÄÆ® ¸®Á¹¹ö
RequestToViewNameTranslator
3.6 ½ºÇÁ¸µ 3.1ÀÇ MVC
3.6.1 Ç÷¡½Ã ¸Ê ¸Å´ÏÀú Àü·«
Ç÷¡½Ã ¸Ê
Ç÷¡½Ã ¸Ê ¸Å´ÏÀú
Ç÷¡½Ã ¸Ê ¸Å´ÏÀú Àü·«
3.6.2 WebApplicationInitializer¸¦ ÀÌ¿ëÇÑ ÄÁÅؽºÆ® µî·Ï
·çÆ® À¥ ÄÁÅؽºÆ® µî·Ï
¼ºí¸´ ÄÁÅؽºÆ® µî·Ï
3.7 Á¤¸®
4Àå ½ºÇÁ¸µ @MVC
4.1 @RequestMapping Çڵ鷯 ¸ÅÇÎ
4.1.1 Ŭ·¡½º/¸Þ¼Òµå °áÇÕ ¸ÅÇÎÁ¤º¸
@RequestMapping ¾Ö³ëÅ×À̼Ç
ŸÀÔ ·¹º§ ¸ÅÇΰú ¸Þ¼Òµå ·¹º§ ¸ÅÇÎÀÇ °áÇÕ
¸Þ¼Òµå ·¹º§ ´Üµ¶ ¸ÅÇÎ
ŸÀÔ ·¹º§ ´Üµ¶ ¸ÅÇÎ
4.1.2 ŸÀÔ »ó¼Ó°ú ¸ÅÇÎ
¸ÅÇÎÁ¤º¸ »ó¼ÓÀÇ Á¾·ù
Á¦³×¸¯½º¿Í ¸ÅÇÎÁ¤º¸ »ó¼ÓÀ» ÀÌ¿ëÇÑ ÄÁÆ®·Ñ·¯ ÀÛ¼º
4.2 @Controller
4.2.1 ¸Þ¼Òµå ÆĶó¹ÌÅÍÀÇ Á¾·ù
HttpServletRequest, HttpServletResponse
HttpSession
WebRequest, NativeWebRequest
Locale
InputStream, Reader
OutputStream, Writer
@PathVariable
@RequestParam
@CookieValue
@RequestHeader
Map, Model, ModelMap
@ModelAttribute
Errors, BindingResult
SessionStatus
@RequestBody
@Value
@Valid
4.2.2 ¸®ÅÏ Å¸ÀÔÀÇ Á¾·ù
ÀÚµ¿ Ãß°¡ ¸ðµ¨ ¿ÀºêÁ§Æ®¿Í ÀÚµ¿»ý¼º ºä À̸§
ModelAndView
String
void
¸ðµ¨ ¿ÀºêÁ§Æ®
Map/Model/ModelMap
View
@ResponseBody
4.2.3 @SessionAttributes¿Í SessionStatus
µµ¸ÞÀÎ Á᫐ ÇÁ·Î±×·¡¹Ö ¸ðµ¨°ú »óÅ À¯Áö¸¦ À§ÇÑ ¼¼¼Ç µµÀÔÀÇ Çʿ伺
@SessionAttributes
SessionStatus
µî·Ï ÆûÀ» À§ÇÑ @SessionAttributes »ç¿ë
½ºÇÁ¸µ ¸ñ ¿ÀºêÁ§Æ®¿Í AbstractDispatcherServletTest¸¦ ÀÌ¿ëÇØ ¼¼¼Ç Å×½ºÆ® ¸¸µé±â
4.3 ¸ðµ¨ ¹ÙÀεù°ú °ËÁõ
4.3.1 PropertyEditor
µðÆúÆ® ÇÁ·ÎÆÛƼ ¿¡µðÅÍ
Ä¿½ºÅÒ ÇÁ·ÎÆÛƼ ¿¡µðÅÍ
@InitBinder
WebBindingInitializer
ÇÁ·ÎÅäŸÀÔ ºó ÇÁ·ÎÆÛƼ ¿¡µðÅÍ
4.3.2 Converter¿Í Formatter
Converter
ConversionService
Formatter¿Í FormattingConversionService
¹ÙÀεù ±â¼úÀÇ Àû¿ë ¿ì¼±¼øÀ§¿Í È°¿ë Àü·«
4.3.3 WebDataBinder ¼³Á¤ Ç׸ñ
allowedFields, disallowedFields
requiredFields
fieldMarkerPrefix
fieldDefaultPrefix
4.3.4 Validator¿Í BindingResult, Errors
Validator
JSR-303 ºó °ËÁõ ±â´É
BindingResult¿Í MessageCodeResolver
MessageSource
4.3.5 ¸ðµ¨ÀÇ ÀÏ»ý
HTTP ¿äûÀ¸·ÎºÎÅÍ ÄÁÆ®·Ñ·¯ ¸Þ¼Òµå±îÁö
ÄÁÆ®·Ñ·¯ ¸Þ¼Òµå·ÎºÎÅÍ ºä±îÁö
4.4 JSP ºä¿Í form ű×
4.4.1 EL°ú spring ÅÂ±× ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ ¸ðµ¨ Ãâ·Â
JSP EL
½ºÇÁ¸µ SpEL
Áö¿ªÈ ¸Þ½ÃÁö Ãâ·Â
4.4.2 spring ÅÂ±× ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ Æû ÀÛ¼º
´ÜÀÏ Æû ¸ðµ¨
¡¶spring:bind¡·¿Í BindingStatus
4.4.3 form ÅÂ±× ¶óÀ̺귯¸®
¡¶form:form¡·
¡¶form:input¡·
¡¶form:label¡·
¡¶form:errors¡·
¡¶form:hidden¡·
¡¶form:password¡·, ¡¶form:textarea¡·
¡¶form:checkbox¡·, ¡¶form:checkboxes¡·
¡¶form:radiobutton¡·, ¡¶form:radiobuttons¡·
¡¶form:select¡·, ¡¶form:option¡·, ¡¶form:options¡·
Ä¿½ºÅÒ UI ÅÂ±× ¸¸µé±â
4.5 ¸Þ½ÃÁö ÄÁ¹öÅÍ¿Í AJAX
4.5.1 ¸Þ½ÃÁö ÄÁ¹öÅÍÀÇ Á¾·ù
JSONÀ» ÀÌ¿ëÇÑ AJAX ÄÁÆ®·Ñ·¯: GET JSON
JSONÀ» ÀÌ¿ëÇÑ AJAX ÄÁÆ®·Ñ·¯: POST(JSON) JSON
4.6 mvc ³×ÀÓ½ºÆäÀ̽º
¡¶mvc:annotation-driven¡·
¡¶mvc:interceptors¡·
¡¶mvc:view-controller¡·
4.7 @MVC È®Àå Æ÷ÀÎÆ®
4.7.1 AnnotationMethodHandlerAdapter
SessionAttributeStore
WebArgumentResolver
ModelAndViewResolver
4.8 URL°ú ¸®¼Ò½º °ü¸®
4.8.1 ¡¶mvc:default-servlet-handler/¡·¸¦ ÀÌ¿ëÇÑ URL °ü¸®
µðÆúÆ® ¼ºí¸´°ú URL ¸ÅÇÎ ¹®Á¦
¡¶mvc:default-servlet-handler/¡·
4.8.2 ¡¶url:resource/¡·¸¦ ÀÌ¿ëÇÑ ¸®¼Ò½º °ü¸®
4.9 ½ºÇÁ¸µ 3.1ÀÇ @MVC
4.9.1 »õ·Î¿î RequestMapping Àü·«
@RequestMapping ¸Þ¼Òµå¿Í Çڵ鷯 ¸ÅÇÎ Àü·«ÀÇ ºÒÀÏÄ¡
HandlerMethod
@RequestMapping Àü·« ¼±ÅÃ
4.9.2 @RequestMapping Çڵ鷯 ¸ÅÇÎ: RequestMappingHandlerMapping
¿äû Á¶°Ç
¿äû Á¶°ÇÀÇ °áÇÕ ¹æ½Ä
4.9.3 @RequestMapping Çڵ鷯 ¾î´ðÅÍ
ÆĶó¹ÌÅÍ Å¸ÀÔ
È®Àå Æ÷ÀÎÆ®
4.9.4 @EnableWebMvc¿Í WebMvcConfigurationSupport¸¦ ÀÌ¿ëÇÑ @MVC ¼³Á¤
@EnableWebMvc¿Í WebMvcConfigurer
@MVC ¼³Á¤ÀÚ ºó µî·Ï ¹æ¹ý
@MVC Àü·«¿ë ¼³Á¤ ºó µî·Ï
4.10 Á¤¸®
5Àå AOP¿Í LTW
5.1 ¾Ö½ºÆåÆ® AOP
5.1.1 ÇÁ·Ï½Ã ±â¹Ý AOP
ÇÁ·Ï½Ã ±â¹Ý AOP °³¹ß ½ºÅ¸ÀÏÀÇ Á¾·ù¿Í Ư¡
ÀÚµ¿ ÇÁ·Ï½Ã »ý¼º±â¿Í ÇÁ·Ï½Ã ºó
ÇÁ·Ï½ÃÀÇ Á¾·ù
5.1.2 @AspectJ AOP
@AspectJ¸¦ ÀÌ¿ëÇϱâ À§ÇÑ Áغñ»çÇ×
@Aspect Ŭ·¡½º¿Í ±¸¼º¿ä¼Ò
Æ÷ÀÎÆ®ÄÆ ¸Þ¼Òµå¿Í ¾Ö³ëÅ×À̼Ç
¾îµå¹ÙÀ̽º ¸Þ¼Òµå¿Í ¾Ö³ëÅ×À̼Ç
ÆĶó¹ÌÅÍ ¼±¾ð°ú ¹ÙÀεù
@AspectJ¸¦ ÀÌ¿ëÇÑ AOPÀÇ ÇнÀ ¹æ¹ý°ú Àû¿ë Àü·«
5.2 AspectJ¿Í @Configurable
5.2.1 AspectJ AOP
5.2.2 ºóÀÌ ¾Æ´Ñ ¿ÀºêÁ§Æ®¿¡ DI Àû¿ëÇϱâ
DI ¾Ö½ºÆåÆ®
@Configurable
·ÎµåŸÀÓ À§¹ö¿Í ÀÚ¹Ù ¿¡ÀÌÀüÆ®
5.3 ·ÎµåŸÀÓ À§¹ö(LT)
5.4 ½ºÇÁ¸µ 3.1ÀÇ AOP¿Í LTW
5.4.1 AOP¿Í LTW¸¦ À§ÇÑ ¾Ö³ëÅ×À̼Ç
@EnableAspectJAutoProxy
@EnableLoadTimeWeaving
5.5 Á¤¸®
6Àå Å×½ºÆ® ÄÁÅؽºÆ® ÇÁ·¹ÀÓ¿öÅ©
6.1 Å×½ºÆ® ÄÁÅؽºÆ® ÇÁ·¹ÀÓ¿öÅ©
6.1.1 Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©¿Í ÄÁÅؽºÆ® Å×½ºÆ®
Å×½ºÆ®¿ë ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ® ij½Ì°ú ¼³Á¤ÆÄÀÏ
ÄÁÅؽºÆ® ¼³Á¤ÀÇ »ó¼Ó°ú ÄÁÅؽºÆ® ·Î´õ
6.1.2 Å×½ºÆ® ÄÚµåÀÇ Å×½ºÆ® ÄÁÅؽºÆ® È°¿ë
Å×½ºÆ® ÄÁÅؽºÆ®·ÎºÎÅÍ DI ¹Þ±â
°øÀ¯ ÄÁÅؽºÆ® »ç¿ë ½Ã ÁÖÀÇÇÒ Á¡
6.2 Æ®·£Àè¼Ç Áö¿ø Å×½ºÆ®
6.2.1 Å×½ºÆ®ÀÇ Æ®·£Àè¼Ç Áö¿ø Çʿ伺
DAO ´Üµ¶ Å×½ºÆ®
·Ñ¹é Å×½ºÆ®
6.2.2 Æ®·£Àè¼Ç Áö¿ø Å×½ºÆ® ÀÛ¼º ¹æ¹ý
Æ®·£Àè¼Ç ¸Å´ÏÀú
@Transactional Å×½ºÆ®
ORM ·Ñ¹é Æ®·£Àè¼Ç Å×½ºÆ®ÀÇ ÁÖÀÇ»çÇ×
Æ®·£Àè¼Ç Áö¿ø Å×½ºÆ®¿¡ DBUnit ÀÌ¿ëÇϱâ
6.3 ½ºÇÁ¸µ 3.1ÀÇ ÄÁÅؽºÆ® Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©
6.3.1 ÀÚ¹Ù ÄÚµå ¼³Á¤Á¤º¸¿Í ÇÁ·ÎÆÄÀÏ È°¿ë
@Configuration Ŭ·¡½º Å×½ºÆ®
@ActiveProfile
6.4 Á¤¸®
7Àå ½ºÇÁ¸µÀÇ ±âŸ ±â¼ú°ú È¿°úÀûÀÎ ÇнÀ ¹æ¹ý
7.1 ½ºÇÁ¸µ ±â¼ú°ú API¸¦ È¿°úÀûÀ¸·Î ÇнÀÇÏ´Â ¹æ¹ý
7.1.1 ºóÀ¸·Î µî·ÏµÇ´Â ½ºÇÁ¸µ Ŭ·¡½º¿Í DI
±¸Çö ÀÎÅÍÆäÀ̽º ºÐ¼®
ÇÁ·ÎÆÛƼ ºÐ¼®
DI/È®Àå Æ÷ÀÎÆ® ºÐ¼®
7.2 IoC ÄÁÅ×ÀÌ³Ê DI
7.2.1 BeanPostProcessor¿Í BeanFactoryPostProcessor
BeanPostProcessor
BeanFactoryPostProcessor
7.3 SpEL
7.3.1 SpEL »ç¿ë ¹æ¹ý
7.4 OXM
7.4.1 Marshaller/Unmarshaller ÀÎÅÍÆäÀ̽º
7.4.2 OXM ±â¼ú ¾î´ðÅÍ Å¬·¡½º
7.5 ¸®¸ðÆðú À¥ ¼ºñ½º, EJB
7.5.1 ÀͽºÆ÷ÅÍ¿Í ÇÁ·Ï½Ã
ÀͽºÆ÷ÅÍ
ÇÁ·Ï½Ã
7.5.2 RESTful ¼ºñ½º ÅÛÇø´
7.5.3 EJB ¼ºñ½º ÀÌ¿ë
7.6 ŽºÅ© ½ÇÇà°ú ½ºÄÉÁÙ¸µ
7.6.1 TaskExecutor ¼ºñ½º Ãß»óÈ
7.6.2 TaskScheduler
7.6.3 task ³×ÀÓ½ºÆäÀ̽º
¡¶task:executor¡·
¡¶task:scheduler¡·
¡¶task:scheduled-tasks¡·¿Í ¡¶task:scheduled¡·
7.6.4 ¾Ö³ëÅ×À̼ÇÀ» ÀÌ¿ëÇÑ ½ºÄÉÁÙ¸µ°ú ºñµ¿±â ŽºÅ© ½ÇÇà
@Scheduled
@Async
7.7 ij½Ã Ãß»óÈ(½ºÇÁ¸µ 3.1)
7.7.1 ¾Ö³ëÅ×À̼ÇÀ» ÀÌ¿ëÇÑ Ä³½Ã ¼Ó¼º ºÎ¿©
@Cacheable
@CacheEvict¿Í @CachePut
¾Ö³ëÅ×À̼ÇÀ» ÀÌ¿ëÇÑ Ä³½Ã ±â´É ¼³Á¤
7.7.2 ij½Ã ¸Å´ÏÀú
7.8 @Enable ¾Ö³ëÅ×À̼ÇÀ» ÀÌ¿ëÇÑ ºó ¼³Á¤Á¤º¸ ¸ðµâÈ
7.8.1 @Import¿Í @Configuration »ó¼Ó
@Import¸¦ ÀÌ¿ëÇÑ ´Ü¼ø Àç»ç¿ë
@Configuration Ŭ·¡½º »ó¼Ó°ú ¿À¹ö¶óÀ̵ùÀ» ÀÌ¿ëÇÑ È®Àå ¹æ¹ý
7.8.2 @Enable Àü¿ë ¾Ö³ëÅ×À̼ǰú ImportAware
@Enable ¾Ö³ëÅ×ÀÌ¼Ç Àû¿ë
ImportAware ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÑ ¿É¼Ç ÁöÁ¤
7.8.3 ºó ¼³Á¤ÀÚ
7.8.4 ImportSelector¿Í ImportBeanDefinitionRegistrar
7.9 Á¤¸®
ºÎ·Ï A ½ºÇÁ¸µ ¸ðµâ
A.1 ½ºÇÁ¸µ ¸ðµâÀÇ Á¾·ù¿Í Ư¡
A.1.1 ½ºÇÁ¸µ ¸ðµâ À̸§
A.1.2 ½ºÇÁ¸µ ¸ðµâ Ãß°¡
¼öµ¿ Ãß°¡
Maven/Ivy ÀÚµ¿ Ãß°¡
A.1.3 ½ºÇÁ¸µ ¸ðµâ ¸ñ·Ï
A.2 ½ºÇÁ¸µ ¸ðµâÀÇ ÀÇÁ¸°ü°è
A.2.1 ¸ðµâº° ÀÇÁ¸°ü°è
ASM ¸ðµâ
Core ¸ðµâ
Beans ¸ðµâ
AOP ¸ðµâ
Expression ¸ðµâ
Context ¸ðµâ
Context.Support ¸ðµâ
Transaction ¸ðµâ
JDBC ¸ðµâ
ORM ¸ðµâ
Web ¸ðµâ
Web.Servlet ¸ðµâ
Web.Portlet ¸ðµâ
Web.Struts ¸ðµâ
JMS ¸ðµâ
Aspects ¸ðµâ
Instrument ¸ðµâ
Instrument.Tomcat ¸ðµâ
Test ¸ðµâ
ºÎ·Ï B ½ºÇÁ¸µ ÀÇÁ¸ ¶óÀ̺귯¸®
B.1 ÀÇÁ¸ ¶óÀ̺귯¸®ÀÇ Á¾·ù¿Í Ư¡
B.1.1 ÀÇÁ¸ ¶óÀ̺귯¸® À̸§
B.1.2 ÀÇÁ¸ ¶óÀ̺귯¸® Ãß°¡
¼öµ¿ Ãß°¡
ÀÚµ¿ Ãß°¡
B.2 ¸ðµâº° ÀÇÁ¸ ¶óÀ̺귯¸® ÀÇÁ¸°ü°è
B.2.1 Çʼö ¶óÀ̺귯¸®
B.2.2 ¸ðµâº° ¼±Åà ¶óÀ̺귯¸®
ASM ¸ðµâ
Core ¸ðµâ
Beans ¸ðµâ
AOP ¸ðµâ
Expression ¸ðµâ
Context ¸ðµâ
Context.Support ¸ðµâ
Transaction ¸ðµâ
JDBC ¸ðµâ
ORM ¸ðµâ
Web ¸ðµâ
Web.Servlet ¸ðµâ
Web.Portlet ¸ðµâ
Web.Struts ¸ðµâ
JMS ¸ðµâ
Aspects ¸ðµâ
Instrument ¸ðµâ
Instrument.Tomcat ¸ðµâ