전체 글

보호되어 있는 글입니다.
@ComponentScan@ComponentScan은 @Component 및 @Service, @Repository, @Controller, @Configuration등과 같이 @Component가 붙어있는 Class들을 자동으로 Scan하여 스프링 Bean으로 등록해주는 역할을 수행한. @Component는 클래스에 사용되며, 빈으로 등록될 때에는 클래스명을 사용하여 등록한다.이때, 클래스의 맨 앞글자만 소문자로 바꿔서 저장한다. 만약 Member 클래스의 경우에는 Bean으로 등록되는 경우 member로 등록되는 것이다.   컴포넌트 스캔과 자동 의존관계 주입이 어떻게 동작하는지 그림으로 알아보자. 1. @ComponentScan  2. Autowired 의존관계 자동 주입 생성자에 @Autowire..
웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다.웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. -> 우리가 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다.-> 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다 메모리 낭비가 심하다.-> 해결 방안은 해당 객체가 딱 1개만 생성되고 공유하도록 설계하면 된다. (싱글톤 패턴) 싱글톤 패턴클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다.private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다.싱글톤 패턴을 적용한 ..
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause ~~~~   스프링 부트 3.2부터 매개변수의 이름을 인식하지 못하는 문제가 있다고 한다.스프링 ..
· 🌐WEB
웹의 요청과 응답은 클라이언트와 서버 간의 통신을 위한 메시지이다. 요청클라이언트가 서버로 보내는 메세지  요청 메세지는 세 가지 부분으로 이루어져 있다. HTTP 프로토콜의 요청 라인요청 방식 (GET, POST, PUT, DELETE)URLHeader요청에 대한 부가적인 정보Body (본문)POST, PUT 요청과 같이 요청과 함께 전달되는 데이터를 포함한다. 요청과 함께 전달되는 데이터가 없을 경우 Body가 없을 수도 있다. 응답서버가 클라이언트로 보내는 메세지  응답 메세지는 세 가지 부분으로 이루어져 있다.HTTP 프로토콜의 상태 라인응답 상태 코드 (200) 메세지Header응답에 대한 부가적인 정보Body (본문)서버에서 클라이언트로 전송되는 데이터   HTTP 요청과 응답 메세지는 텍스트..
https://velog.io/@sunnamgung8/%EC%9E%90%EB%B0%94-%EC%83%9D%EC%84%B1%EC%9E%90Constructor [자바] 생성자(Constructor)생성자란 new 연산자에 의해서 단 한 번 호출되는 단위입니다. 우리는 그 동안 생성자를 따로 정의하지 않았습니다. 하지만 객체는 new 연산자에 의해서 무조건 단 한 번 호출됩니다. 우리가 그 동velog.io  NoArgsConstructor : 파라미터가 없는 디폴트 생성자를 생성@AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성@RequiredArgsConstructor : final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자를 생성 @NoArgsCon..
변수 - SpringELObjectuser.username : user의 username을 프로퍼티 접근 user.getUsername()user['username'] : 위와 같음 user.getUsername()user.getUsername() : user의 getUsername() 을 직접 호출Listusers[0].username : List에서 첫 번째 회원을 찾고 username 프로퍼티 접근list.get(0).getUsername()users[0]['username'] : 위와 같음users[0].getUsername() : List에서 첫 번째 회원을 찾고 메서드 직접 호출MapuserMap['userA'].username : Map에서 userA를 찾고, username 프로퍼티 접근m..
타임리프 특징서버 사이드 HTML 렌더링 (SSR)네츄럴 템플릿스프링 통합 지원  서버 사이드 HTML 렌더링 (SSR)타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. 네츄럴 템플릿타임리프는 순수 HTML을 최대한 유지하는 특징이 있다.타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. 즉, 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿(natural templates)이라 한다. 스프링 통합 지원타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다. ..
스프링 컨테이너 생성스프링 컨테이너가 생성되는 과정을 알아보자  1. 스프링 컨테이너 생성//스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);  2. 스프링 빈 등록스프링 컨테이너는 @Bean 어노테이션이 달린 메서드를 스프링 빈에 등록한다. 이때 빈 이름은 메서드 이름을 사용하며 빈 이름을 직접 부여할 수 도 있다.@Bean(name = "memberService2")  3. 스프링 빈 의존관계 설정 - 준비  4. 스프링 빈 의존관계 설정 - 완료   컨테이너에 등록된 모든 빈을 조회해보자.package hello.core.beanfind;import h..
말동말동현
동현s토리