분류 전체보기
-
[Spring] Dispatcher Servlet에서 핸들러가 저장하고, 매핑되는 과정백엔드/Spring 2023. 4. 21. 23:49
프로그램이 실행되면 어떻게 핸들러가 만들어지고, HTTP 요청을 하면 어떻게 매핑이 되는 것일까? 1. 서론 한 크루가 컨트롤러 클래스를 @Bean으로 등록해서 사용하려니까 오류가 발생했었다. 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 @Configuration public class SpringConfig { private final DataSource dataSource; @Autowired public SpringConfig(final DataSource dataSource) { this.dataSource = dataSource; } @Bean public RacingGameController racingGameContro..
-
@Transaction를 적용하면 어떻게 하나의 Connection을 사용할까?백엔드/Spring 2023. 4. 14. 00:11
자동차 경주 웹 미션을 하는데 페어가 JdbcTemplate update를 여러 번 호출하면 @Transaction 을 적용해도 Connection이 여러번 열리고 닫히는지 궁금해했다. 그래서 JdbcTemplate update 내부 코드를 보니까 update를 할 때마다 Connection이 한 번 열리고 닫히는 것 같아보였다. 그래서 집에 돌아와 @Transaction을 적용하면 어떻게 달라지는지 내부 코드를 보고 정리를 해보았다. 먼저 JdbcTemplate의 update 코드를 확인해보자 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 @Override public int update(final PreparedStatementC..
-
[Spring] 스프링 기본백엔드/Spring 2023. 4. 11. 09:00
1. DI (Dependency Injection) 객체 간의 의존성을 외부에서 주입하는 방식 - 장점: 낮은 결합도를 가지고, 더 쉽게 테스트할 수 있음 - 낮은 결합도를 가지면 장점: 개방 폐쇄 원칙의 장점을 가짐 (코드 재사용, 확장에 용이해짐) 2. Spring Bean 스프링에서 관리하는 객체로 IoC 컨테이너에 의해 생성되고, 관리되어짐 Bean을 등록하는 방법은 @Configuration과 @Bean을 사용하거나, @Component를 사용할 수 있음 3. IoC 컨테이너 IoC 컨테이너는 객체의 생명주기를 관리하는 곳임 이건 프로그래밍에서 쓰이는 컨테이너와 뜻이 같지만, 스프링에서 IoC가 추가된 이유는 개발자가 직접 객체의 생명주기를 관리하지 않고, 프레임워크가 대신 수행하기 때문임 Io..
-
우테코 레벨 1이 끝나고 다시 보는 SOLID백엔드/객체지향 | 디자인패턴 2023. 4. 6. 00:55
https://hello70825.tistory.com/530 [SOLID] 객체지향 설계 원칙 우아한테크코스 프리코스를 할 때, 인터넷에서 뒤적뒤적 거리면서 공부를 했었지만 간단한 코드와 글만 봐서는 이해가 되지 않았었다. 그런데 지금 객체지향 책을 읽어보니 이해가 되어서 나중 hello70825.tistory.com 우테코 프리코스가 끝나고, 본 과정을 시작하기 직전에 SOLID에 대한 글을 포스팅 했었다. 하지만 이때에는 실제 코드로 적용을 하면 어떻게 될지 제대로 가늠이 안갔는데, 레벨 1을 진행하면서 어느정도는 알게 되었다고 말할 수 있다. TDD를 하면서 SRP가 무엇인지 제대로 알게 되었고, 체스 미션에서 다중 if문을 제거하면서 OCP가 얼마나 중요한지 알게 되었다. 이외에도 다른 원칙들이..
-
[후기] 스프링 입문을 위한 자바 객체지향의 원리와 이해후기/책 후기 2023. 3. 1. 09:00
표지에 개구리가 있어서 개구리책으로도 불리는 책이다. 메모리 → 객체지향 → 디자인 패턴 → 스프링 입문 순서로 책이 진행된다. 여기서 디자인 패턴을 제외하고는 자세하게 설명되어 있다. 장점 - 예시 코드를 순차적으로 실행한다고 가정하며 T 메모리 구조에 대해 굉장히 자세하게 알려준다. - SOLID에 대한 감을 어느정도 잡게 해준다. 특히 다른 책들에 나오는 비슷한 설명과는 다르게 좀 더 쉬운 방법, 명확한 방법으로 설명해줘서 잘 이해할 수 있게 되었다. - IoC / DI를 스프링의 역사를 통해 알려준다. 처음엔 XML 파일로 일일이 설정했던 것을 @Autowired와 @Resource로 오기까지의 설명을 해준다. 이 부분을 읽기 전에는 XML 파일을 왜 사용한거지 의아했는데, 코드를 수정하지 않고서..
-
[Java] @BeforeAll과 static block의 차이백엔드/Java 2023. 3. 1. 09:00
책에서 메모리 구조를 공부하다가 갑자기 테스트 어노테이션을 찾아보라는 말이 나왔다. @BeforeClass를 찾아보라고 했는데, JUnit4가 @BeforeClass이고, JUnit5는 @BeforeAll을 사용한다. @BeforeAll @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented @API(status = STABLE, since = "5.0") public @interface BeforeAll { } - 어노테이션이나 메서드에 @BeforeEach를 붙일 수 있다. - 런타임(프로그램 종료 전까지)동안 어노테이션이 남아있다. - JavaDoc을 생성할 때..
-
[우아한테크코스 5기] 3주차 후기백엔드/우아한테크코스 5기 2023. 2. 27. 10:23
기간: 2023/02/20 (월) ~ 2023/02/26 (일) 자바 메모리 관리에 대해 블로그 포스팅을 하려다가 여기에 쏟는 시간이 생각보다 너무 오래 걸리고, 이렇게까지 글을 올려야하나라는 생각이 들어서 거의 후기글만 올릴 것 같다. 지금 공부에 다음달엔 데이터엔지니어쪽 공부도 추가로 하기로 결정했다. 블로그 포스팅하는 시간이 줄었으니까 나름 시간이 생기지 않을까라는 생각이 든다. 캡틴 포비와 이야기를 나누었다. 책에 T 메모리라는 키워드가 계속 나와서 JVM의 Runtime Data Area와 뭐가 다른지 검색하고 있었는데, 포비와 인사를 한 뒤 포비가 메모리에서의 힙과 스택의 차이점을 말해보라고 하였다. JVM에 대해서도 아직 공부하기 전이라 자료구조 스택에 대해 말을 했는데, 다시 물어보아서 이..
-
[Java] Enum 내부 코드 확인하기백엔드/Java 2023. 2. 22. 08:34
사다리 미션을 하는데 리뷰어님이 Enum 내부 코드를 통해 답변을 해준 것이 기억났다. 그래서 Enum 코드를 확인하는데 다른 내부 코드들보다 만만해보여서 해석을 해보기로 했다. 전체적인 코드는 아래와 같다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 public abstract class Enum implements Comparable, Serializable { private final String name; public final String n..