[Spring] 입문, 핵심 복습 기록 上

bin1225·2022년 8월 1일
0

Spring

목록 보기
12/15
post-thumbnail

22.07.20

- 오랜만에 intellij나 java를 사용해보려고 하니까 자바 버전 설정부터 애를 먹었다.. java 18이 나온 줄 모르고 8이랑 헷갈려서 헤메다가 그냥 11로 설정했다.

- thymeleaf를 쓰는데 model에서 넘어온 변수를 제대로 인식하지 못하는 오류가 있었다.
https://yoons2owo.tistory.com/15 를 참고해서 임시로 해결했다.

- ctrl + p 로 어노테이션의 옵션을 보고 설정할 수 있다.

static class Hello {
		private String name;

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}
	}

- 이렇게 static으로 class내부에서 또 다른 class를 생성할 수 있다.
getter, setter를 이용해 접근하는 방식이 자바 bean 표준 방식이다.

- 기본적이지만 잊고 있던 static, public, private 같은 메소드 키워드들에 대해 다시 상기했고, controller, service, repository를 정말 간단히 다뤄보면서 예전에 배웠던 내용들을 상기할 수 있었다.

22.07.21

- 너무 하기 싫어서 오후 6시까지 통으로 날려버렸다...

- 어제에 이어서 입문 강의를 보면서 배웠던 내용을 상기했다. 이전에 mybatis를 이용해서 백엔드 스터디를 했던 기억들도 조금씩 났고, 처음 강의를 볼 때보다 훨씬 잘 이해된다. 아직까지는.

- 스프링 빈을 직접 등록하는 것과 그것에 대한 원리를 간단히 배웠다. 결국 스프링의 가장 큰 기능 중 하나는 클래스들을 bean으로 등록해두고 DI를 통해 싱글톤으로 그것들을 관리하고 주입해주는 것, 그리고 이러한 기능을 통해 Interface로 구현된 객체들을 편하게 변경할 수 있는 객체지향언어의 장점에 대해서 배웠다. 추가로 AOP를 이용할 수 있는 원천도 바로 SPRING이 객체 주입을 관리해주기 때문이다.

- thymeleaf를 이용해 링크를 이동하고 객체를 주고 받는 것과 데이터베이스를 연동하는 내용을 배웠다. 이번에는 h2가 아니라 mysql로 한 번 스스로 해보려고 했는데, 너무 시간을 많이 잡아먹을 것 같아서 일단은 그냥 h2로 다시 따라해보려고 한다. 지금 주는 db가 아니라 spring을 복습하는 것이기 때문에.

22.07.22

롤 하다가 또 정신 못 차리고 하루를 절반 날렸다. 오전에 알고리즘 풀 생각이었는데, 일어나기만 하면 의욕이 사라져버린다.

  • 객체지향
    객체지향에 대해 간단히 복습하고 스프링의 탄생 배경과 역할에 대해서 배웠다.
    그냥 내가 이해한대로 말해보자면 객체지향은 레고를 조립하듯이 객체들을 조립해서 프로그램을 구성하는 코딩 방식이다. 이렇게 했을 때 장점은 코드를 유지 보수하기 용이하고, 각각의 객체가 구분돼있기 때문에 각각 작성하고 합치는 방식이 가능해진다.
    이를 가능하게 하는 객체지향의 가장 중요한 특성중 하나인 다형성 (overriding, overloading) 을 배웠고, 좋은 객체지향의 5대 원칙 SOLID에 대해 배웠다. SRP는 하나의 객체는 하나의 기능, LSP과 ISP는 그냥 각각의 객체를 역할에 맞게 잘 분리하고, 잘 구현하자 라고 이해했다.
    중요한 건 OCP 개방-폐쇄 원칙, DIP 의존관계 역전 원칙 인데 문제는 다형성을 이용한 자바코드만으로는 이것이 지켜지지 않는다. 이를 위해서는 의존관계를 주입해주는 기능이 필요한데, 이 기능을 지원해주는 것이 바로 SPRING이다.

22.07.27

원래 주단위로 쓸 계획이었는데, 무기력증이 또 도져서 요 며칠 아무것도 안 해버렸다. 그래서 이번주까지 한 번에 묶어서 쓸 계획이다.
자바 코드를 이용해 간단한 예제 만들기를 해보았다. 입문에서 배운 사실과 동일하지만, 이렇게 했을 때 문제점은 다형성을 아주 잘 활용한다고 해도 OCP, DIP를 위반한다. 또 직접 구현객체를 생성하고, 연결한다는 점에서 SRP도 위반한다.
이를 해결하기 위해 의존관계주입만을 하는 AppConfig 클래스를 만들어서 역할을 수행하도록 하는 작업을 해보았다.

22.07.31

스프링으로 AppConfig를 bean으로 등록해서 사용해보았다.
코드 자체는 spring container를 생성하고 거기서 또 bean을 조회해서 사용하기 때문에 코드가 더 복잡해진다고 느꼈다. 하지만 이렇게 했을 때 장점은 아마 스프링이 싱글톤으로 객체를 관리해주는 것일 것이다.
확실히 다시 보니 이해 자체는 잘 되지만, 흥미가 떨어진다.. 내일부터는 정말 꾸준히 들을 각오이다.

0개의 댓글