✨ Back-end173 @ModelAttribute사용하여 극한으로 코드 줄이기 @RequestParam으로 데이터를 하나하나 받아서 처리하는 과정은 너무나 불편하다. 그래서 @ModelAttribute를 사용했다. @ModelAttribute란? 컨트롤러 메서드에서 모델 객체를 생성하고 초기화하는데 사용한다. 주로 웹 애플리케이션의 폼 데이터를 처리하고 뷰에 데이터를 전달하는데 유용하다 1. 요청 파라미터 처리 여기서 사용된 @ModelAttribute는 Item 객체를 생성하고, 요청 파라미터의 값을 set~~~ 으로 지정해준다. 2. Model 추가 또한, Model에 @ModelAttribute로 지정한 객체를 자동으로 넣어주기 때문에, 왼쪽 사진과 같이 model.addAttribute를 사용하지 않아도 자동으로 매개변수의 이름으로 들어간다. (@ModelAttribute(.. 2023. 9. 2. @RequiredArgsConstructor , @PostConstruct @RequiredArgsConstructor이란? 생성자를 자동으로 생성하는데 도움을 주는 것이 주요 목적이다. 단, 인스턴스 변수에 final 이라는 키워드가 붙은 필드에 대한 생성자를 생성한다. 왼쪽 사진 처럼 ItemRepository에 대한 생성자를 생성하는 것 대신, 오른쪽 그림처럼 코드 한줄로 바꿔줄 수 있다. @PostConstruct란? 빈(Bean) 초기화 작업을 수행하기 위해 사용된다. 이 어노테이션을 사용하면 객체가 생성된 후에 특정 메소드가 호출되도록 할 수 있다. 일반적으로 Java 클래스의 생성자는 객체가 인스턴스화 될 때 실행되지만, 객체를 완전히 초기화하고 준비하는 작업은 생성자 안에서 수행하기에는 적절하지 않을 때가 있다. 이 어노테이션을 사용하면 객체가 생성된 후에 원하는.. 2023. 9. 2. [Spring-Legacy] @ModelAttribute와 ModelAndView servlet-context.xml 스프링 프레임워크에서 컴포넌트 스캔을 수행하는 설정 요소이다. 이 설정을 사용하면 지정한 패키지나 패키지들을 스캔하여 관련된 컴포넌트를 자동으로 찾아 빈으로 등록할 수 있다. servlet-context.xml에 을 설정함으로써 스프링 컨테이너는 해당 패키지 아래에 있는 컴포넌트들을 검색하고 빈으로 등록한다. 여기서 주로 사용되는 속성은 base-package이다. 이 속성은 스캔할 대상 패키지를 지정한다. base-package에 지정한 패키지부터 하위 패키지까지 컴포넌트 스캔이 수행한다. 예를 들어, 라는 설정을 사용했다면 다음과 같은 동작이 이루어진다. 1. 스프링 컨테이너가 시작될 때, com.bit.controller 패키지와 그 하위 패키지를 스캔한다. 2... 2023. 8. 29. 스프링(Spring) MVC 패턴에 대한 개념과 동작 순서 스프링 MVC ( Model- View- Controller ) Pattern Model 어플리케이션 상태의 캡슐화 어플리케이션의 기능 표현 상태 쿼리에 대한 응답 변경을 view에 전달 View 모델에게 업데이트 요청 모델을 화면에 시각적으로 표현 사용자의 입력을 컨트롤러에 전달 컨트롤러가 View를 선택하도록 허용 Controller 사용자 액션을 모델 업데이트와 Mapping 응답에 대한 view를 선택. Spring MVC의 구성요소 DispatcherServlet (Front Controller) 클라이언트의 요청을 받는다. Controller에게 클라이언트의 요청을 전달한다. Controller가 리턴한 결과값을 View에게 전달하여 알맞은 응답을 생성한다. HandlerMapping 클라이언.. 2023. 8. 29. @RestController와 @RequestMapping @PathVariable ( 경로변수 ) @RestController와 @Controller의 차이 @Controller 이렇게 하고 실행하면 Error resolving template [a], template might not exist or might not be accessible by any of the configured Template Resolvers 이런 오류가 뜬다. @RestController 하지만 @Controller 대신에 @RestController를 사용하게 되면, 위와 같이 페이지가 잘 나타난 것을 확인할 수 있다. @Controller 이 어노테이션을 사용한 클래스는 일반적으로 뷰 렌더링을 위해 사용되며, HTML을 포함한 다양한 타입의 응답을 생성할 수 있다. 주로 서버 사이드 렌더링을 위해 사용된다. @Res.. 2023. 8. 28. 로깅(Logging) 에 대해서, 왜 써야하는지? @Slf4j 어노테이션 로깅(Logging) 이란? 실행 동작을 일련의 기록인 로그(Log)의 생성을 통해 남겨놓는 일이다. 로그는 재현하기 힘든 버그나 성능에 대한 통계 등, 프로그램 동작에 있어서 유용한 정보를 제공하기 때문에 로깅 작업은 실제 서비스 개발에 필수적이다. 보통 데이터를 넘겨주고 받는 과정에서 컨트롤러에서 System.out.Println( ) 메서드를 이용해 컨트롤러에 데이터가 왔는지 체크를 하게 된다. 간편해서 이렇게 늘 사용해왔는데, 치명적인 단점이 존재한다. System.out.println( ) 메서드를 사용했을 때의 문제점 1. 성능 저하 System.out.println( ) 메서드는 내부적으로 newLien( ) 메서드를 호출하는데, 이는 sysnchronized 가 사용된다. sysnchron.. 2023. 8. 27. [Spring-legacy] xml로 AOP 어드바이스(Advice) AOP의 역할들에는 다양하게 있다. 1. 어드바이스 (Advice) 2. 조인포인트 (JoinPoint) 3. 포인트 컷 (PointCut) 4. 애스펙트 (Aspect) 5. 인트로덕션 (Introduction) 6. 타깃( Target) 7. 프록시 (Proxy) 8. 위빙(Weaving) 이번에는 Advice에 대해 정리해보았다. Dao 인터페이스, OracleDao 클래스 Dao 인터페이스를 만들고, OracleDao에서 Dao를 구현하려고 한다. 인터페이스에서 정의한 메소드를 OracleDao 클래스에서 출력문을 구현해보았다. BeforeAdvice 클래스 인터페이스 BeforeAdvice를 가져오려고하는데, 만들어주지 않았음에도 이렇게 가져올 수 있다. berforeAdvicemethod( ).. 2023. 8. 25. [Spring] AOP 개념과 용어 8가지 AOP란? 관점지향 프로그래밍으로, 문제를 바라보는 관점을 기준으로 프로그래밍 하는 방법론 what when where 횡단관심사(cross-cutting-concerns) 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리해 재사용하는 것이 AOP다. 어떤 클래스의 어떤 메소드가 실행되기 전/ 후에 다른 기능을 수행할 수 있는 코드를 캡슐화 하는것이다 즉, 비 기능적 요구사항이 핵심 애플리케이션 코드에 나타나지 않도록 캡슐화하는 것. 목적 : 공통 기능 관련 로직(로깅, 트랜잭션 관리, 보안 등)의 분리, 핵심로직 구현 코드 AOP 용어 어드바이스 ( Advice ) 조인포인트 ( JoinPoint ) 포인트 컷 ( PointCut) 애스팩트 ( Aspect ) 인트로덕션 ( In.. 2023. 8. 25. [Spring-Legacy] @Configuration 과 @Bean, @ComponentScan, @ImportResource 이전까지는 Xml을 만들어서 조립을 했는데, 이제는 만들지 않고 조립해보려고한다. @Configuration 과 @Bean ConfigMain ApplicationContext context 스프링 컨테이너를 나타내는 객체이다. 컨테이너는 빈을 생성하고 관리하며, 의존성 주입 등을 수행하는 역할을 한다. AnnotationConfigApplicationContext(ConfigDemo.class) ConfigDemo 클래스를 이용하여 애노테이션 기반의 스프링 컨테이너를 생성한다. ConfigDemo 클래스 내에 정의된 @Bean 메서드들을 이용하여 빈들을 생성하고 구성하게 된다. StateServer 데이터를 담아 줄 객체를 하나 생성했다. ConfigDemo @Configuration @Componen.. 2023. 8. 24. [Spring-Legacy] @Service, @Autowired, @Qualifier 사용법 dao.xml 이 요소는 스프링 컨테이너가 어노테이션을 사용한 설정을 처리할 수 있도록 해준다. 스프링에서는 @Component, @Autowired, @Qualifier 등과 같은 어노테이션을 사용하여 빈의 생성과 의존성 주입을 설정할 수 있다. 이를 통해 어노테이션들을 스프링 컨테이너가 인식하고 적용하도록 도와준다. 이 요소는 지정된 패키지 아래에 있는 클래스들을 검색하고, 스프링의 컴포넌트 스캔 기능을 활용하여 자동으로 빈으로 등록할 수 있게 해준다. @Component, @Service, @Repository, @Controller 등과 같은 어노테이션을 가진 클래스들을 자동으로 스캔하여 빈으로 등록할 수 있다. DaoMain 'src/main/java/com/bit/di/basic4/dao.xm.. 2023. 8. 24. [Spring-Legacy] properties를 이용해 데이터 출력하기 dbms.xml xml에 위 두개를 추가해주었다. DbmsSystem @Component를 이용해 객체를 만들었고, @Value를 통해 값을 직접 넣어주었다. @PostConstruct 메서드에 부착되는것으로, 빈이 생성되고 의존성 주입이 이루어진 후 호출된다. 주로 초기화 작업을 수행하는데 사용. 빈이 생성된 직후 호출되므로 해당 메서드에서 초기화 로직을 구현할 수 있다. @PreDestroy 메서드에 부착되고, 빈이 소멸되기 전에 호출된다. 주로 빈이 소멸되기 전에 정리작업을 수행하는데 사용된다. SystemMain 이후 main 메소드에서 출력해보면, @value에 직접 데이터를 넣은 값들이 조회되는 것을 확인해볼 수 있다. initDbms가 맨 위에 호출된 이유는 @PostConstruct 때문이.. 2023. 8. 23. [Spring-Legacy] XML과 @Annotation을 이용해 데이터 출력하기 HTML 삽입 미리보기할 수 없는 소스 Book 이후, 객체에서 initBook() 메소드와 destroy() 메소드를 만들어 주었다. book.xml init-method : 빈이 초기화 될 때 호출될 메서드의 이름을 지정한다. 여기서 initBook 메서드가 초기화될 때 호출된다. destroy-method : 빈이 소멸될 때 호출될 메서드의 이름을 지정한다. 여기서 destroy 메서드가 빈이 소멸될 때 호출. BookMain ApplicationContext: ApplicationContext는 Spring의 IoC (Inversion of Control) 컨테이너를 나타내는 인터페이스이다. IoC 컨테이너는 빈의 생명주기를 관리하고 의존성 주입을 통해 객체를 생성하고 관리한다. 애플리케이션 컴포.. 2023. 8. 23. 이전 1 2 3 4 5 6 ··· 15 다음