본문 바로가기

내가 당면한 문제와 해결방안

여기가 자바 맛집이구나

차장님이 첨 맛보는 스프링에 방황하는 나를 구제해주러 설명과 보는 방법을 보여주셨는데.

기억나는것과 기억하고 싶은 부분을 몇자 적어본다.

다음에도 또 새로운 프로젝트를 만들거나, 봐야할 일이 있을테니까. 


0. 프로젝트가 import한 패키지들 확인. pom.xml 에서. 레일즈는 gemfile 에서 했던것같다.

gradle 방식 maven 방식 다름.



1. 처음에 소스에 접근할때는.... 프로세스가 실행되는 순서대로 이해해보자! - 

고리짝 기억을 꺼내어 보면은 Java는 main 메소드가 있어야 실행이 된다 - 는 기억이 어렴풋하게.....


난 처음에 무작정 콘트롤러를 하나 만들어놓고 대충 view를 따라 붙이고. (모델은 만들어져 있었음) 하니까 통째로는 이해가 안갔다. 

근데 Application.java 파일의 main 메소드가 실행되는 과정중에 일어나는 일. 


우리팀 프로젝트 기준으로 보면 

SpringBootServletInitializer로 Application 클래스를 만들어줌.


그리고 override한 SpringApplicationBuilder configure 메소드로 이 Application 클래스를 실행시킴 

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-convert-an-existing-application-to-spring-boot


@SpringBootApplication
public class Application extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		// Customize the application or call application.sources(...) to add sources
		// Since our example is itself a @Configuration class (via @SpringBootApplication)
		// we actually don't need to override this method.
		return application;
	}

}


예를들면 import 된 패키지 (스프링.org의 패키지들), 

애노테이션이 붙은 클래스들. 

config를 물고 뜨는 것(autoconfigure 패키지 사용). 

콘트롤러가 서비스 멤버변수를 가지고 -> 서비스는 리포지토리 멤버 변수를 가지고 -> 리포지토리는 database에 접근할수있게 해주며 많은 편의를 제공(find_by_id? 맞나? 레일즈에서 제공했던 ORM 메소드) 



2. dependency injection 의존성 주입 https://hackersstudy.tistory.com/106 https://gmlwjd9405.github.io/2018/11/09/dependency-injection.html

이거는 명확하게 설명할수있을만큼 이해가 가지는 않았다.



3. 다아는 MVC 이지만~

Model. 저장해놓은 데이타

View. 사용자가 접근할수있고 요청을 보낼 수 있는 곳

Controller. 요청을 처리하고 응답을 이렇게 해주겠다 명세한 곳.


왜 스프링에는 리포지토리가 따로 있을까? 

음 ㅠㅠ findById 도 해줄수있고. 다른 DB로 바꾼다고했을때 이식성도 좋게 해주는것같은데... 더 찾아봐야겟움 








지식이란 공들여 쌓는것이지, 남에게 설명을 들어서는 너무 휘발성인것같다... 그렇지만 내가 채굴하기에는 브레인 파워가 부족함..

'내가 당면한 문제와 해결방안' 카테고리의 다른 글

짚고 넘어가기  (0) 2019.03.11
의존성 주입이 대체 뭐야?  (0) 2019.03.07
2019-03-04 스프링을 공부하다가 1  (0) 2019.03.04
프로토콜/스킴/SNI/telnet/ssh  (0) 2019.02.22
multer 의 사용  (0) 2019.02.12