목록Back (34)
호비시의 끄적끄적
Filter Dispatcher Servlet에 요청이 전달되기 전 후에 작용 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있음 Spring Context 외부에 존재하기에 Spring과 무관한 자원에 대해 동작 CORS , XSS , LOG , 인증 등 init() - 필터 인스턴스 초기화 doFilter() - 전/후 처리 destory() - 필터 인스턴스 종료 Interceptor Controllet로 요청이 전달되기 전 후에 작용 Spring Context 내부에서 처리 모든 빈 객체에 접근 가능 여러개로 chaining 하게 사용 가능 로그인 인증, 권한 체크, 프로그램 실행시간 계산작업 로그 확인 등 preHandler() - 컨트롤러 메서드가 실행되기 전 postHandler..
Bean 은 Spring Container에 의해 생명주기가 관리된다. Container 시작 Bean 인스턴스화 Dependenceis Injection 의존성 주입 Custom Init Method Custom Destory Method END 1, 2 ,3 과정을 통해 Bean 이 Container에 등록되고 Bean을 사용 할 수 있게 된다. 4 에서 우리가 만든 메소드에서 빈을 이용할 수 있고 5 우리의 프로그램이 끝나게 되면 Bean 의 LifeCycle도 끝나게된다. Bean Lifecycle 을 고려하지 않고 Bean을 등록해놓고 @Autowired로 주입받아 사용하다 보면 아직 등록하지 않은 Bean들을 사용 할 수 없다는 메시지를 받는다고한다. 스프링이 알아서 순서를 바꿔 참조되는 Be..
Client → DispatcherServlet 가장 앞 단에서 요청을 받아 FrontController 라고도 불림 DispatcherServlet → Controller API 를 처리해 줄 Controller 를 찾아 요청을 전달 Handler mapping 에는 API path 와 Controller 함수가 매칭되어 있음 GET /hello/html/dynamic → HomeController 의 helloHtmlFile() 함수 GET /user/login → UserController 의 login() 함수 GET /user/signup → UserController 의 signup() 함수 POST /user/signup → UserController 의 registerUser() 함수 함수..
Spring Framework 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다. 장점 의존성 주입 DI 제어의 역전 IOC 관점지향 프로그래밍 AOP Spring Framework에는 이러한 장점들이 있지만, 최소한의 기능으로 Spring MVC를 사용하여 기본 프로젝트를 세팅하는데 너무 많은 시간이 걸리는 문제가 있었다. 이러한 문제를 해결하기 위해 나온것이 Spring Boot Spring Boot의 장점 Embedde..
JPA는 무엇인가? JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. 그렇다면 ORM이란? ORM(Object-Relational Mapping)은 객체와 관계형 DB를 매핑한다는 뜻 다시말해 JPA는 자바 ORM에 대한 API 표준 명세이고, 인터페이스의 모음이다. 따라서 구현체가 없고, 사용하기 위해서는 ORM프레임워크를 선택해야한다. 다양한 프레임워크가 존재하지만 가장 대중적인 것은 Hibernate이다. ORM을 만든 이유는 SQL 작성을 편하게 하기 위해서이다. ORM이 없이도 충분히 개발은 가능하다. 하지만 단순하고 반복적인 SQL 작성에 시간이 많이 들고, 실수하기 쉽기 때문에 ORM을 사용한다. 이 ORM 의 표준이 되는것이 JPA이다. JPA가 없었을 때..
우선 AWS ElastiCache를 만들어 줍시다. 생성을 누르면 나오는 기본 설정입니다. 노드 유형을 알맞게 설정해주세요. Redis는 in Memory Cache 이기에 메모리 크기가 큰것이 좋지만 저는 test 겸 작은걸 선택하겠습니다. https://aws.amazon.com/ko/elasticache/pricing/ [관리형 캐싱 서비스 요금 - Amazon ElastiCache 요금 - Amazon Web Services aws.amazon.com](https://aws.amazon.com/ko/elasticache/pricing/) 캐시 노드 유형에 따른 요금입니다. 잘 선택해주세요 고급 Redis 설정에서 서브넷을 새로 생성해주고 가용영역도 배치해줍니다. 나머지 옵션들은 아무것도 수정하지 ..
개인 보관용입니다. git bash 에서 ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피 EC2 연결 완료되면 java 설치 및 버전 확인 sudo apt-get update sudo apt-get install openjdk-8-jdk java -version 포드포워딩 sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 nohup nohup java -jar JAR파일명.jar & kill process # 아래 명령어로 미리 pid 값(프로세스 번호)을 본다 ps -ef | grep java # 아래 명령어로 특정 프로세스를 죽인다 kill -9 [pid값]
서버가 1개인 이유는 필요가 없다 Sever1 이 모든 Client의 로그인 정보를 가지고 있기 때문에. 하지만 대용량 트래픽 처리를 위해 2대 이상의 서버를 사용중 이라면 Server 마다 다른 Client 의 로그인 정보를 가지고 있을 수 있다. Server1에는 Client1의 정보만 있다고 가정하면 Client1이 Server2에 접근하기 위해서는 다시 로그인을 해야할 것이다. 이런 것을 방지하기 위해 크게 2가지 방법이 있다. 1. Session Storage Session Storage에 모든 Client의 로그인 정보를 가지고 있으면 Client가 다른 Session에 접속을 요구하더라도 다시 로그인 하는 번거로운 일이 없어진다. 2. JWT 모든 서버에서 동일한 Secret Key 소유해서..