일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Pipeline
- gradle
- Jenkins
- docker
- DevOps
- ansible
- 허브
- 방화벽
- Collection
- JPA
- container
- Spring
- 소켓
- cloud
- 라우터
- Java
- 액세스회선
- IntelliJ
- Set
- map
- post
- jdk
- LAN어댑터
- mybatis
- sonarQube
- Linux
- 캐시서버
- tomcat
- STREAM
- AOP
- Today
- Total
목록Spring (8)
거북이-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")로 들어가 로직을 수행할 수 있는 것일까? 네트워크와의 관계..
들어가기 앞서... Spring 개념을 한 번 복습하자라는 차원에서 블로그를 새로 만들어 글을 썼는데 생각보다 내가 개념을 대충 공부하고 Spring을 활용하고 있음을 알 수 있었다. 이 부족한 개념에 대해서 채우려다보니 이론적 조사와 설명에만 많은 시간을 쏟은 것 같다. 하지만, 부족한 개념을 정확히 이해하고 코드 활용법을 이해하다보니 "왜 그 방식으로 프로그래밍을 수행하는가"가 명확히 보이며 프로그램의 난이도가 쉬워졌음을 알 수 있었다. (특히 AOP... 처음 AOP 코드 짤 때는 주먹구구식으로 짰는데 개념을 완벽히 이해하고 짜니 에러 1개 없이 빠르고 정확한 구현이 가능해졌고, 컨닝 페이퍼 없이도 AOP에 대한 코드를 짤 수 있게 되었다) 앞으로도 코드에 대한 설명을 하면서 필요할 때마다 새로운 ..
실습에 앞서... 자, 아무 클래스나 말고 @Aspect 구문을 입력해보자. 해당 라이브러리가 존재하는가? 만약 존재한다면 바로 아래 파트로 넘어가면 된다. 하지만 @Aspect는 존재하지 않고 @EnableAspectJAutoProxy 어노테이션만 존재하는 경우가 있을 것이다. 이 경우 실습을 할 수가 없다! 그렇다면 어떻게 해야 실습을 할 수 있을까. Spring의 간편한 점은 build.gradle을 통해 의존성을 주입만 해주면 Spring 측에서 의존성에 필요한 라이브러리들을 Repository에서 찾아 자동으로 다운로드한다는 것이다. 즉, AOP 의존성을 build.gradle에 주입해주기만 한다면 Spring은 자동으로 Repsitory에서 의존성을 위해 필요한 라이브러리를 찾아 다운로드한다...
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를 통해 사용자가 제어의 흐름을 컨트롤하지 않고 스프링이 대신 작업을 처리함으로써 개발자는 로직에만 신경쓰면 되기 때문에 효율적인 개발이..
XML 활용한 Spring Bean XML 방식으로도 Spring Bean을 등록할 수 있다. 하지만, 최근에는 사용하지 않는다고 봐도 무방할 정도로 활용도가 떨어진다. 만약 XML 방식을 알고 싶다면 찾아보는 것을 추천하지만 정말 활용도가 1도 없다고 생각하기 때문에 이 글에서는 스킵하겠다. Java Config를 활용한 방식 Java Config는 @Bean 어노테이션을 활용해서 객체를 Bean으로 등록하는 방식이다. 코드를 통해 알아보자 class MemberService{ ... } class VIPService{ ... } @Configuration public class AppConfig { @Bean public MemberService memberService(){ return new Me..
Spring Container ◎ Spring Conatiner란? 스프링 컨테이너는 스프링에서 자바 객체들을 관리하는 공간을 말한다. 앞에 IoC를 설명할 때 짧게 말했듯, Spring에서는 개발자가 직접 객체를 관리하지 않고 특별한 객체가 모든 객체들을 관리하게 된다. Spring Container는 개발자가 활용했던 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시켰던 행위를 개발자 대신해주는 주체가 된다. 즉, Spring Container는 Spring의 IoC 역할을 수행하는 특수 공간이라고 생각하면 된다. Spring Container는 내부에 Spring Bean 저장소를 가지고 있으며, Spring Bean 저장소에 Bean 이름 및 객체가 저장되는 것이다. ..
Spring Initializr를 활용한 Gradle Project 생성 1. https://start.spring.io/ 접속 2. 아래와 같이 선택하기 Project : Gradle Project Maven Project로 만들어도 되기는 하지만 Gradle이 Maven보다 시기적으로 늦게 나왔으며 비교적 뛰어난 스펙을 가지므로 Gradle을 추천한다 나중에 Gradle과 Maven의 차이에 대해 심도 있게 비교해 보자 Language : Java Spring Boot : SNAPSHOT이 붙지 않은 버전 중 1개를 선택. SNAPSHOT 버전은 "개발 중인 버전"을 의미하기 때문에 안정성이 떨어진다. 따라서 SNAPSHOT 버전이 아닌 것을 활용하는 것이 좋다. Dependencies : Sprin..