Spring 3.1ºÎÅÍ Servlet 3.0À» Áö¿øÇϴµ¥, Servelt 3.0 ºÎÅÍ web.xml ¾øÀÌ ÀÚ¹Ù À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. µû¶ó¼ Á¤È®È÷´Â ½ºÇÁ¸µ 3.1 ¾øÀ̵µ web.xml ¾ø´Â ÀÚ¹Ù À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
±×·±µ¥.. Á¶±Ý ±ÍÂúÀº ºÎºÐÀÌ Àְŵç¿ä; ±×·± ±ÍÂúÀº ÀÛ¾÷À» ½ºÇÁ¸µÀÌ ´ë½Å ÇØÁÖ°í °³¹ßÀÚ´Â ¼ºí¸´À̳ª ÇÊÅ͸¸ µî·ÏÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù.
±ÍÂúÀº ÀÛ¾÷¿£ ¹¹°¡ Àֳĸ顦 ÀÏ´Ü ÀÚ¹Ù SPI¸¦ »ç¿ëÇÏ´Â ¹æ½ÄÀ̱⠶§¹®¿¡, META-INF/services µð·ºÅ丮¿¡ javax.servlet.ServletContainerInitializer¶ó´Â À̸§ÀÇ ÆÄÀÏÀ» ¸¸µé¾î Áà¾ß ÇÕ´Ï´Ù.
±×¸®°í ServletContainerInitializerÀÇ ±¸Çöü¸¦ ¸¸µé°í ±× À§¿¡ @HandlerTypes¶ó´Â ¾Ö³ëÅ×À̼ÇÀ» ºÙÀÌ¸é¼ @HandlerTypes ¾Ö³ëÅ×ÀÌ¼Ç ¾È¿¡.. ServletContainerInitializerÀÇ onStart ¸Þ¼µåÀÇ Ã¹¹ø° ¸Å°³º¯¼ö·Î ¹ÞÀ» Ŭ·¡½º ŸÀÔÀ» ¸í½ÃÇØ Áà¾ß ÇÕ´Ï´Ù. ±× ŸÀÔÀ» A¶ó°í Çغ¸ÁÒ.
±×·³ ÀÌÁ¦ A ŸÀÔÀÇ ±¸Çöü¸¦ ¸¸µé°Å³ª, »ó¼Ó ¹ÞÀº Ŭ·¡½º°¡ onStart ¸Þ¼µåÀÇ Ã¹¹ø° ¸Å°³º¯¼ö·Î Àü´Þ µË´Ï´Ù.
±ÍÂúÁÒ;; ±×·¡¼ ½ºÇÁ¸µÀÌ ´Ù Çصװí, ¿ì¸®´Â ±×³É WebApplicationInitializer ÀÎÅÍÆäÀ̽º¸¸ ±¸ÇöÇÏ¸é µË´Ï´Ù.
| public class WebAppIntializer implements WebApplicationInitializer { |
| |
| @Override |
| public void onStartup(ServletContext servletContext) throws ServletException { |
| //parent |
| AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); |
| rootContext.register(AppConfig.class); |
| |
| servletContext.addListener(new ContextLoaderListener(rootContext)); |
| // new ContextLoader(rootContext).initWebApplicationContext(servletContext); |
| |
| //child |
| AnnotationConfigWebApplicationContext dispatcherServletContext = new AnnotationConfigWebApplicationContext(); |
| dispatcherServletContext.register(WebConfig.class); |
| |
| ServletRegistration.Dynamic dispatcher = servletContext.addServlet("spring", new DispatcherServlet(dispatcherServletContext)); |
| dispatcher.setLoadOnStartup(1); |
| dispatcher.addMapping("/"); |
| } |
| } |
ÀÌ·¸°Ô¿ä. ÀÌ°Ô web.xmlÀ» ´ë½ÅÇÑ´Ù°í º¸¸é µË´Ï´Ù.
³ª¸ÓÁö XMLÀº ½ºÇÁ¸µ ºó ¼³Á¤ ÆÄÀÏÀÌ Àִµ¥, ½ºÇÁ¸µ 3.0ºÎÅÍ ÀÌ¹Ì ÀÚ¹Ù·Î ºó ¼³Á¤À» ÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù. ±×·±µ¥, À̹ø ½ºÇÁ¸µ 3.1Àº ±× ±â´ÉÀ» ´ëÆø °ÈÇÏ¿© XML ³×ÀÓ½ºÆäÀ̽º¿¡ ÇØ´çÇÏ´Â ºó ¼³Á¤µµ ÀÚ¹Ù ¼³Á¤À¸·Î °¡´ÉÇÏ°Ô ÇØÁÝ´Ï´Ù. ¹°·Ð ÀüºÎ´Â ¾Æ´Ï±¸¿ä. ÀϺθ¸¿ä¡¦ (±×·¡¼ »ç½Ç ½ºÇÁ¸µ ÀÚ¹Ù ¼³Á¤À» ±×¸® ¸¹ÀÌ »ç¿ëµÉ °Í °°Áø ¾Ê´Ù°í »ý°¢ÇÕ´Ï´Ù.)
| @Configuration |
| @EnableTransactionManagement |
| @ComponentScan(basePackages = "whiteship", excludeFilters = {@ComponentScan.Filter(Configuration.class), @ComponentScan.Filter(Controller.class)}) |
| public class AppConfig { |
|
|
| @Bean(destroyMethod = "shutdown") |
| public DataSource dataSource(){ |
| return new EmbeddedDatabaseBuilder() |
| .setName("bookDB") |
| .setType(EmbeddedDatabaseType.H2) |
| .addScript("classpath:book-schema.sql") |
| .build(); |
| } |
|
|
| @Bean |
| public JdbcTemplate jdbcTemplate(){ |
| return new JdbcTemplate(dataSource()); |
| } |
|
|
| @Bean |
| public PlatformTransactionManager transactionManager(){ |
| return new DataSourceTransactionManager(dataSource()); |
| } |
|
|
| } |
ÀÚ¹Ù ¼³Á¤µµ xml ó·³ À¥¿ë ¼³Á¤°ú ºñÀ¥¿ë ¼³Á¤À¸·Î ³ª´²¼ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°Ç Root ACWAC¿¡¼ »ç¿ëÇÒ ºñÀ¥¿ë ¼³Á¤ÀÌ°í¡¦
| @Configuration |
| @EnableWebMvc |
| @ComponentScan(basePackages = "whiteship", |
| useDefaultFilters = false, |
| includeFilters = @ComponentScan.Filter(Controller.class)) |
| public class WebConfig extends WebMvcConfigurerAdapter { |
|
|
| @Override |
| public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { |
| configurer.enable(); |
| } |
|
|
| @Override |
| public void addResourceHandlers(ResourceHandlerRegistry registry) { |
| registry.addResourceHandler("/resources/**"); |
| } |
|
|
| @Bean |
| public ViewResolver viewResolver(){ |
| InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); |
| viewResolver.setPrefix("/WEB-INF/views"); |
| viewResolver.setSuffix(".jsp"); |
| return viewResolver; |
| } |
|
|
| } |
ÀÌ°Ç À¥¿ë ºóÀ» ¼³Á¤ÇÑ Child ACWACÀÔ´Ï´Ù.
Àüü ¾ÛÀº Github¿¡ ¿Ã·ÁµÎ¾ú½À´Ï´Ù.
https://github.com/keesun/swagger-noxml-mvc
ÀÚ¼¼ÇÑ ³»¿ëÀº À̹øÁÖ Åä¿äÀÏ º½½Ï ½º¿þ°Å Ã¥°ÉÀ̶§ ¸»¾¸µå¸®°Ú½À´Ï´Ù.