MapleStory Cookie With Halo

☕ JAVA/☕ Library & Pattern 34

[JAVA]간단한 Logging 사용법

※ 실무에서는 System.out.print*를 거의 사용하지 않는다. 로깅 라이브러리를 사용해서 로그를 출력한다.  SLF4J https://www.slf4j.org/인터페이스.구현체로 Logback, Log4J, Log4J2 등을 제공한다.Logback https://logback.qos.ch/스프링 부트에서 기본으로 제공.따라서 대부분 로그백을 사용하는 추세이다. 로그 선언 private final Logger log = LoggerFactory.getLogger(getClass());이 부분은 클래스에서 제일 윗단에 존재하며 항상 동일하게 작성한다.codeLoggerFactroy.getLogger(여기) 안에 해당 클래스가 들어와야 한다.Logger를 import할 때 org.slf4j 로 호출해..

[JAVA]어댑터에 구조가 다른 컨트롤러 추가하기

이전 글에서 만든 오댑터에 구조가 다른 컨트롤러를 연결해보겠습니다.2025.03.01 - [☕ JAVA/☕ Library & Pattern] - [JAVA]어댑터 패턴을 도입해 유연한 컨트롤러를 만들어보자  파일은 ControllerV4HandlerAdapter 하나 추가되었다.→ 이제 어댑터는 v3컨트롤러와 v4컨트롤러를 다루게 된다.프론트 컨트롤러에 딱 두가지만 추가됐다.initHandlerAdapter() 에서 ControllerV4HandlerAdapter를 핸들러어댑터 리스트에 추가하고initHandlerMappingMap()에 어떤 URI가 오면 반환할 컨트롤러를 추가해준다.ControllerV4HandlerAdapter이전 코드와  거의 동일하다. handle() 에서 반환 타입만 맞게끔 M..

[JAVA]어댑터 패턴을 도입해 유연한 컨트롤러를 만들어보자

이전 코드를 개선하기 위해 어댑터 패턴을 사용할 것이다.여러 컨트롤러를 자유롭게 사용할 수 있는 유연한 컨트롤러를 만들어보자.※ 이전 글 2025.03.01 - [☕ JAVA/☕ Library & Pattern] - [JAVA]MVC의 Model 만들어보기  핸들러 어댑터중간 어댑터 역할.덕분에 여러 컨트롤러 호출 가능.핸들러컨트롤러가 할 수 있는 영역을 넓힌 것. (컨트롤이라 생각하면된다)  폴더와 경로딱 이 세개만 만들면 됨.프론트 컨트롤러프론트 컨트롤러가 생성자로 바로 함수 두개를 실행해 map두개에 값을 답아줍니다.handler(컨트롤러)를 adapter로 보내고, 어댑터의 handle()을 이용해 ModelVeiw를 반환 받습니다.나머지는 이전 코드와 거의 동일합니다.어댑터의 조상. 컨트롤러들을..

[JAVA]MVC의 Controller에 사용할 model을 직접 만들어보기

이전 코드의 프론트 컨트롤러를 개선해, 운영하기 좋은 컨트롤러를 만들어보자.이전 글 2025.03.01 - [☕ JAVA/☕ Library & Pattern] - [JAVA]MVC의 Model 만들어보기바뀐 부분만 체크해서 살펴보겠습니다.  폴더 및 경로컨트롤러의 파라미터에 model이 추가되었다.각 컨트롤러프론트 컨트롤러model을 프론트 컨트롤러에 담아서 보내면 각 기능을 실행하고 값이 담겨진다.→ 혹시나하고 추가 설명하자면..반환되지 않아도 참조형 객체는 주소만 전달되면, 값이 담기는데 문제가 없다. 2023.01.08 - [☕ JAVA/☕ 개발환경] - [JAVA]단순히 정리한 JVM구조와 Memory(+static) ※ 참조 : https://www.inflearn.com/roadmaps/373

[JAVA]MVC의 Model 만들어보기

이전 글의 코드에 Model을 추가해보려한다.2025.03.01 - [☕ JAVA/☕ Library & Pattern] - [JAVA]MVC의 View 만들어보기Request에 값을 담아 반환했는데 별도의 Model객체를 만들어 볼 것이다.  파일 및 경로model 역할viewName과 model역할을 할 Map을 만들었다.controller가 이제는 ModelView를 반환하도록 한다.각 기능의 컨트롤러들ModelView를 반환하는데 mv.getModel().put(key, value);각 기능을 실행하고 반환해야 하는 데이터를 담아 보낸다.프론트 컨트롤러 (코드가 길어져서 바뀐 부분만 가져옴)ControllerV3 controller = controllerMap.get(requestURI);URI에 ..

[JAVA]MVC의 View 만들어보기

이전 글의 코드에서 View를 분리해보겠다.2025.02.28 - [☕ JAVA/☕ Library & Pattern] - [JAVA]HttpServlet 프론트 컨트롤러 도입해보기  폴더 및 파일 경로MyViewinterface ControllerV2컨트롤러들의 공통로직을 위한 부모 인터페이스 프론트 컨트롤러X 를 상속받는 컨트롤러들.→ 이전 코드에서 달라진 점은 MyView를 반환한다는 점이다. 코드가 많이 단축되었다.프론트컨트롤러각 컨트롤러들은 Myview를 반환하고 있다.반환된 view의 render()를 실행하여 포워딩한다. ※ 참조 : https://www.inflearn.com/roadmaps/373

[JAVA]HttpServlet 프론트 컨트롤러 도입해보기

💡 FrontController화면에서 뭔가를 클릭해 호출 했을 때, 각각의 여러 컨트롤러로 이동하지 않고, 하나의 프론트 컨트롤러로 이동해 각 컨트롤러로 이동하는 구조이다. 수문관👨‍🎤과 같은 역할 공통 처리가 가능하고, 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.이 글에서는 나오지 않지만, 스프링MVC의 핵심도 FrontController이며, Dispatcherservlet으로 되어 있다.  기존 코드에서 프론트 컨트롤러를 도입해보겠다.2025.02.28 - [☕ JAVA/☕ Library & Pattern] - [JAVA]HttpServlet, JSP, JSTL을 이용한 MVC pattern   패키지와 클래스 위치interface 컨트롤러를 상속받는 컨트롤러들..

[JAVA]HttpServlet, JSP, JSTL을 이용한 MVC pattern

※ 이전 글2025.02.28 - [☕ JAVA/☕ Library & Pattern] - [JAVA]JSP로 회원관리 웹 애플리케이션 만들기여기에서 JSTL을 사용해 JSP의 복잡한 코드를 개선해보려 한다. 폴더 및 파일servletmvc패키지와 webapp폴더 아래 WEB-INF폴더를 새로 만들어 작업했다.💡 MVC패턴은 View로 이동할 때 Controller를 거쳐야한다.controller역할. 이 서블릿을 이용해 new-from.jsp로 forward로 이동한다.신규 작성란 new-form.jspaction:save로 서블릿이 있는 같은 폴더 내에서 이동한다.model역할을 하는 서블릿. 저장 로직request.setAttribute("이름지정", 데이터); 로 데이터를 전달한다.request에..

[JAVA]HttpServlet 이용해 회원관리 웹 애플리케이션 만들기

기본 환경 구성 스프링부트 만들기2025.02.27 - [☁ Network/🌏 HTTP] - [HTTP]HttpServlet 사용해보기 환경설정부터 폴더프로젝트 생성시 만들어진 기본클래스에  @ServletComponentScan  을 추가한다.domainRepository💡 동시성 문제가 고려되어 있지 않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려Domain 코드더보기package hello.servlet.domain.member;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class Member { private Long id; private String username; pr..

[JAVA]싱글톤 방식의 주의점

싱글톤 방식의 주의점  여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에, 싱글톤 객체는 상태를 유지stateful 하게 설계하면 안된다.무상태 stateless 로 설계해야한다.특정 클라이언트에 의존적 필드가 있으면 안된다.특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다.가급적 읽기만 가능해야 한다.필드 대신 자바에서 공유되지 않는 지역변수, 파라미터, ThreadLocal 등을 사용해야 한다.스프링 빈의 필드에 공유 값을 설정하면 큰 장애가 발생할 수 있다.(실무에서는 이러한 문제가 발생하면 원인을 찾기 힘들다)  ※ 참조 : https://www.inflearn.com/roadmaps/373

반응형