본문 바로가기

Spring10

[Spring] DI : Dependency Injection DI 를 사용하는 이유와 생성자 주입을 선호하는 이유는 여러가지가 있지만 본 예제에서 DI 사용 이유는 테스트 코드를 작성함에 있어 MemoryMemberRepository() 의 객체 생성이 MemberSerivice 와 MemberSeriviceTest 에서 각각 생성되고 있는데, 새로운 객체를 만들어 테스트 하는 것이 아닌 만들어진 객체를 가져와 테스트 하기 위해 즉, 테스트 대상을 하나로 일체화 시키기 위함이다 import ... public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); //private final MemberRepository memberRep.. 2021. 8. 28.
[Spring] Optional <T> Optional 는 NPE: NullPointerException 을 피하기 위한 클래스이다 Optional 는 null이 될 수 있는 값을 감싸는 Wrapper 클래스로, null 이 오더라도 NPE가 발생하지 않게 해주고, Optional는 클래스이기 때문에 다양한 메소드를 제공한다 어떤 데이터가 null이 올 수 있는 경우 해당 값을 Optional 로 감싸고, orElse 또는 orElseGet 메소드를 사용해 값이 없는 경우라도 NPE를 발생시키지 않고 값을 가져올 수 있다 // Optional의 value는 값이 있을 수도 있고 null 일 수도 있다. // getName() 은 값이 있을 수도, null 일 수도. Optional optional = Optional.ofNullable(get.. 2021. 8. 26.
[Spring] 정적컨텐츠, MVC와 템플릿엔진, API 정적컨텐츠 값의 변화 없이 저장된 파일을 웹브라우저에 띄운다(그냥 내린다) // 컨트롤러 @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!!"); return "hello"; } ※ 컨트롤러에서 data의 속성값 hello!! 을 직접 받고 html로 전달되어 화면에 나타남 // hello.html 정적페이지 반환 ※ th:text 에서 입력한 값으로 바뀌므로 p태그 사이의 입력값은 무시해도 좋음 MVC와 템플릿엔진 외부(웹)에서 파라미터를 받아 컨트롤러에 전달되고 Model에 담은 후 템플릿으로 넘어가면 값이 치환된다 뷰를 통해 렌더링 후 변환된 html 을 웹브라우저에 띄운다 @GetMapp.. 2021. 8. 23.
[Spring] Windows에서 cmd로 빌드&제거 (feat. IntelliJ) 1) 우선 IntelliJ를 STOP한다 안그러면 오류발생 2) cmd에서 명령어 cd를 이용해 폴더 디렉토리를 찾고 계속해서 폴더를 타고 들어가서 실행할 패키지에 도착한다 ex) cd SpringStudy 3) dir을 입력하고 gradle.bat을 확인한 후 gradle.bat build 를 입력해 빌드한다 (맥은 ./gradlew build) 4) 빌드하면 build 폴더가 생성되고 cd build, cd libs 를 입력해 libs 파일로 들어간다 5) dir 디렉토리를 확인 후 .jar 로 끝나는 파일을 java -jar 뒤에 덧붙여서 java 를 실행시킨다 6) 주소창에 해당 주소 입력 후 들어가면 화면이 보인다(빌드 끝) 7) gradle.bat clean 을 입력하면 build 파일이 제거.. 2021. 8. 22.