✅ 스프링이란?
- 스프링 컨테이너(Spring Container)
스프링 컨테이너 or 애플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공합니다. 스프링 컨테이너는 설정정보를 참고 하며 애플리케이션을 구성하는 오브젝트를 생성하고 관리합니다. 이 객체를 빈(Bean)이라고 부릅니다. ApplicationContext와 BeanFactory 두 가지 종류가 있습니다.
- IoC/DI, 서비스 추상화, AOP
프레임 워크는 오브젝트가 생성되고 동작하는 방식에 대한 틀을 제공할 뿐만 아니라, 애플리케이션 코드가 어떻게 작성돼야 하는지에 대한 기준인 프로그래밍 모델을 제시해줍니다. 스프링의 핵심적인 프로그래밍 모델은 다음과 같습니다.
- IoC(Inversion of Control)과 DI(Dependency Injection)
IoC는 객체의 생성부터 생명주기 관리, DI는 의존성 객체 주입을 의미합니다. 이를 통해 스프링의 장점 중 하나인 객체의 생명주기 관리와 객체 간의 결합도 낮추기를 가능하게 합니다.
- 서비스 추상화(Service Abstraction)
서비스 추상화는 각종 서비스를 일관된 방법으로 사용할 수 있도록 추상화된 인터페이스를 제공하는 것입니다. 예를 들어, 데이터베이스를 사용하는 서비스를 개발할 때, JDBC, JPA, MyBatis 등 다양한 기술을 사용할 때 각각의 API와 구현 방식을 개발자가 일일이 학습하고 구현해야 합니다. Spring에서는 각 기술별로 독립적인 구현체 대신에 일관된 인터페이스를 제공함으로써 개발자는 다양한 기술을 일관된 방법으로 사용할 수 있으며, 변경에 대한 유연성과 유지보수성이 높아지게 됩니다.
- AOP(Aspect-Oriented Programming)
프로그램의 흐름을 수평적으로 잘게 쪼개어, 공통적인 기능을 모듈화하는 기법입니다.
- IoC(Inversion of Control)과 DI(Dependency Injection)
- 기술 API
스프링에서 제공하는 API와 지원 기술은 모두 스프링의 프로그래밍 모델에 따라 작성되어 있기 때문에, 이를 통해 여러 계층(웹 프레젠테이션, 비즈니스 서비스 등)에서 필요한 주요 기술을 스프링에서 일관된 방식으로 사용할 수 있게 지원해주는 기능과 전략 클래스 등을 제공하고 있습니다.
👉스프링을 사용한다는 것은 바로 이 세가지 요소를 적극적으로 활용해서 애플리케이션을 개발한다는 뜻입니다.
✅ Maven 프로젝트 생성 및 환경설정
토비의 spring 3.1은 2012년도에 발간된 책으로 10년도 더 된 책이지만 기본기를 익히기에는 이만한 책이 없다고 생각했습니다. 다만 SpringFramework 나 Depnedency 설정들이 업데이트가 많이 되었기 때문에 책에 있는 설정을 참고하면서 Maven 설정으로 바꾸어 진행하였습니다.
- IDE : STS3 - 3.9.18.RELEASE
- SpringFramework : 5.3.20
- Java : 11
- Maven
- Dependency
- MariaDB
- Spring Framework: DAO
- Spring test
- pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringFrameProj1</groupId> <artifactId>SpringFrameProj1</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client --> <!-- MariaDB로 교체함. --> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.20</version> <!-- <scope>test</scope> --> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-dao</artifactId> <version>2.0.8</version> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>11</release> </configuration> </plugin> </plugins> </build> </project>
프로젝트 환경
- IDE : STS3 - 3.9.18.RELEASE
- SpringFramework : 5.3.20
- Java : 11
- Maven
Uploaded by N2T