이하.
Spring Framework == Spring
Spring Boot == Boot
Spring의 경우 Dependency를 설정해줄 때 설정 파일이 매우 길고, 모든 Dependency에 대해 버전 관리도 하나하나 해줘야 한다.
그래서 하나의 버전을 올리려고 할 때 다른 Dependency에도 영향을 미쳐 버전 관리에 어려움이 많았다고 한다.
코드로 한번 알아보도록 하자.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.5</version>
</dependency>
implementation 'org.springframework.boot:spring-boot-starter-web'
Spring Boot Starter?
Boot 를 사용할 때 편하게 Dependency를 추가할 수 있게 하는 것!
바로 위의 코드에서도 보이는
spring-boot-starter-*
이 부분이라고 할 수 있다.
Starter의 더 자세한 설명은 민지킴님 벨로그에 있음!
Spring 의 경우 Configuration 설정도 매우 길고 모든 어노테이션 및 빈 등록 등을 설정해줘야 한다고 한다.
Boot는 application.properties 파일이나 .yml 파일에 설정하면 끝!
역시 코드로 알아보자 (Thymeleaf 사용을 위해 설정하는 법)
@Configuration
@EnableWebMvc
public class MvcWebConfig implements WebMvcConfigurer {
@Autowired
private ApplicationContext applicationContext;
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver =
new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("/WEB-INF/views/");
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
registry.viewResolver(resolver);
}
}
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
Spring으로 개발한 어플리케이션의 경우, war 파일을 Web Application Server 에 담에 배포
Boot 의 경우 jar 파일로 배포 Tomcat 이나 Jetty 같은 내장 WAS를 가지고 있기 때문
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
이 부분은 밑의 참고 자료를 읽어보는게 좋을 것 같다!!
위 코드들과 내용도 참고자료의 내용들입니다.
참고 자료
나의 공부 저장소님의 블로그