일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Jenkins
- Linux
- 라우터
- Collection
- JPA
- Set
- LAN어댑터
- post
- ansible
- 액세스회선
- 소켓
- 캐시서버
- AOP
- map
- Java
- Pipeline
- docker
- Spring
- jdk
- mybatis
- IntelliJ
- 허브
- 방화벽
- gradle
- DevOps
- tomcat
- STREAM
- cloud
- container
- sonarQube
- Today
- Total
목록웹 개발/Spring(이론) (14)
거북이-https://velog.io/@violet_evgadn 이전완료
공부하게 된 이유 URL 및 HTTP Protocol을 공부하다보니 궁금한 점이 생겼다. 앞에서 URL에 대해 설명할 때 URL은 "서버 자원이 어디에 위치하는지"를 명시하는 값이다. 따라서 파일명을 입력해야 한다. 하지만 우리는 Spring MVC를 사용할 때 아래와 같이 활용한다 @GetMapping("/sample/samplePage") 어떻게 이것이 가능한 걸까? Client가 "www.sample.com/sample/samplePage"로 접속할 때 서버는 어떻게 이 URL이 "www.sample.com/sample/samplePage/index.html"을 반환하는 것이 아닌 @GetMapping("/sample/samplePage")로 들어가 로직을 수행할 수 있는 것일까? 네트워크와의 관계..
Jenkins를 적용하다 보니 Gradle Command을 활용해 작업물을 WAR파일로 Build 할 필요가 있었다. 따라서 Gradle에 대해 먼저 알아보고 다음 Section에서 Gradle Build에 관한 명령어에 대해 뜯어보는 과정을 가져보자. Gradle ◎ Gradle이란? Gradle은 "Compile, Test, Packaing, Deploy & Run" Task들을 자동화시켜주는 Build Tool이다. 이전에 배웠듯 Compile은 Java 파일을 Byte Code(.class 파일)로 변환해주는 작업, Test는 JUnit 등을 활용한 테스트 작업, Packaging은 만들었던 Byte Code를 활용해 실행 파일(JAR나 WAR)로 만들어주는 작업, Deploy & Run은 패키징..
WAR와 JAR WAR와 JAR의 차이점을 설명하기 앞서 이 둘이 어떤 개념인지부터 알아야 할 필요가 있다. 과연 WAR와 JAR가 무엇일까? WAR(.war 파일), JAR(.jar 파일)은 모두 아카이브(압축) 파일이다. 이들은 Application을 쉽게 배포하고 동작시킬 수 있도록 Java 기반 Code로 생성한 실행 파일들과 실행 관련 파일들(Resource, 속성 파일, Dependency 파일 등)을 하나로 패키징 해주는 것이 주 역할이다. 개념만 보자면 조금 복잡할 수도 있으나 예시를 보면 매우 쉽다. 우리는 Web Application을 개발할 때 build.gradle에서 Dependency Tag 안에 필요한 의존성을 주입함으로써 원하는 기능을 추가할 수 있었다. 이 과정에서 Inte..
위 사진이 Spring Web 계층을 한 사진안에 담은 것이다. 이전에 설명했던 DTO, DAO, VO, Entity나 MVC 패턴 같은 것은 따로 설명하지 않고 Spring Web 계층 자체에 대해서만 집중하여 설명하도록 하겠다. Web Layer Presentation Layer라고도 한다. 브라우저에서 Web Client의 Request를 처리하거나 Respond를 보내는 역할을 수행하는 Layer이다. 또한 Service Layer나 Repository Layer에서 Exception이 발생할 경우 최종적으로 이 Web Layer에서 해당 Excpetion을 처리하게 된다. 자 Web Layer가 Request와 Respond를 처리하는, 외부 요청 및 응답에 대한 로직을 처리한 Layer라는 것..
DTO 이전 Section에서 말했듯 DTO는 Entity의 모든 필드값 중 사용할 필드만 뽑아서 새로운 Class를 만들면 된다. DTO에 대한 정해진 Rule이나 무조건 활용해야할 Annotation 등은 존재하지 않는다. 하지만 개인적으로는 Lombok의 @Data를 달아주는 걸 추천한다. @Data에는 Equals와 Hashcode가 달려 있어 DTO로써도 객체의 동일성 판단 여부가 가능해지며 toString을 구현해줘 디버그나 Junit Test에도 편리하고 @Getter와 @Setter를 자동으로 달아줘 코드량을 확 줄일 수 있다는 장점을 가진다. 두 번째로 toEntity() 메서드를 달아주는 것을 추천한다. DTO의 목적이 데이터를 Layer간 전달해주는 것이지만, 결국 DB와 통신하기 위..
DAO Data Access Object의 약자이다. 말 그대로 Data에 접근하는 역할을 하는 객체이며, 곧 DB에 직접적으로 CRUD 작업을 시행하는 클래스라고 말할 수 있을 것이다. DAO는 클래스 내부에서 직접적으로 CRUD 과정을 실행시킬 수 있어야 한다. Spring Data JPA에서 직접적으로 CRUD 과정을 실행하는 주체가 무엇이었는지 생각해보면 바로 "JpaRepository"였다. 엄밀하게 따지면 Repository와 DAO의 차이점은 존재하지만, 기본적으로 Spring Data JPA에서는 Repository가 DAO를 대체하기 때문에 개발자가 직접 구현할 일이 없는 데이터라고 볼 수 있다. 그렇다면 DAO와 Repository의 차이점이 무엇일까? 이는 DAO를 직접 구현한 클래스..
AOP란? ◎ 스프링 삼각형 위 그림에 나오는 삼각형을 "스프링 삼각형"이라고 한다. 이는 스프링의 3대 요소를 나타낸 것으로써 DI, AOP, PSA 3가지로 이루어지고 그 기반에는 POJO기반으로 프로젝트가 구성되어야 함을 말해 준다. DI는 이전까지 IoC와 함께 지겨울 정도로 설명했다. PSA(Portable Service Abstraction)는 환경이나 세부 기술 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 만들어 준다는 것이다. Spring은 어댑터 패턴을 활용해 같은 작업을 수행하는 다수의 기술을 공통된 인터페이스를 통해 제어할 수 있게 해준다. 어댑터 패턴은 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 인터페이스로 변환하는 패턴으로써 인터페이스 호환성 문제 때문에 활..
IoC ◎ IoC란? Spring Container와 Spring Bean을 제대로 공부했다면 이제는 IoC가 무엇인지 바로 설명할 수 있을 것이다. IoC는 Inversion of Control(제어의 역전)의 약자로써 메소드나 객체 호출 및 생성 작업을 개발자가 직접 하지 않고, 외부(특별한 객체)가 수행하도록 하는 것이다. 즉, 기존에는 개발자가 객체를 생성했다면 IoC에서는 개발자는 어떤 객체를 활용할지만 (Spring에게) 알려주면 제어권을 가진 주체(Spring Container)가 알아서 의존성 객체(Spring Bean)을 주입해주는 것을 의미한다. IoC를 통해 사용자가 제어의 흐름을 컨트롤하지 않고 스프링이 대신 작업을 처리함으로써 개발자는 로직에만 신경쓰면 되기 때문에 효율적인 개발이..
Spring Container ◎ Spring Conatiner란? 스프링 컨테이너는 스프링에서 자바 객체들을 관리하는 공간을 말한다. 앞에 IoC를 설명할 때 짧게 말했듯, Spring에서는 개발자가 직접 객체를 관리하지 않고 특별한 객체가 모든 객체들을 관리하게 된다. Spring Container는 개발자가 활용했던 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시켰던 행위를 개발자 대신해주는 주체가 된다. 즉, Spring Container는 Spring의 IoC 역할을 수행하는 특수 공간이라고 생각하면 된다. Spring Container는 내부에 Spring Bean 저장소를 가지고 있으며, Spring Bean 저장소에 Bean 이름 및 객체가 저장되는 것이다. ..
Spring Framework ◎ Framework란? Framework의 사전적 의미는 "뼈대"이다. 이를 컴퓨터 쪽과 접합하면 뼈대가 되는 코드들이라고 말할 수 있을 것이다. 즉, 프레임워크란 SW 구체적인 부분에 대한 설계 및 구현을 쉽게 하기 위해 재사용이 가능한 클래스들을 제공하는 것이라고 말할 수 있다. 예시를 들어보자. 차체 외곽을 만드려고 하는데 색깔이 다르다는 이유로 2개의 서로 다른 외곽을 만들 필요가 없다. 차체 외곽을 2개 동일하게 만들고 만들어진 외곽에 프린트칠을 다르게 하여 결과적으로는 다른 2개의 제품을 만드는 것이다. 이 상황에서 차체 외곽이 Framework가 되는 것이다. ◎ Spring Framework란? 스프링 프레임워크를 한 마디로 정의하자면 아래와 같다 자바 엔터..