java/spring8 ResponseDto 사용이유 Generic 타입으로 responseDto를 만들지 않고 바로 List로 넘겨버리게 되면 response가 배열타입으로 넘어가기 때문에 데이터를 가공할때 유연성이 떨어진다. Result로 한번 감싸게 되면 객체가 List를 감싼 형태로 반환된다. 데이터를 가공할때 유연하게 활용 할 수 있다. 2022. 12. 5. Spring Sockets WebSocket - 사용자의 브라우저와 서버 사이이 인터렉티브 통신 세션을 설정할 수 있게 하는 고급 기술이다. - 개발자는 웹 소켓 API를 통해 서버로 메시지를 보내고 서버의 응답을 위해 서버를 폴링하지 않고도 이벤트 중심 응답을 받는 것이 가능합니다. - Socket Over HTTP (ws://...or wss://...) -> http상에 존재함(http 기반이다) - IE10+ (Can use pure WebSocket javascript library) SockJS - Like socket.io( NodeJS) Polyfill - IE 8+ (Use sockjs-client library) - STOMP(Streaming Text Oriented Messaging Protocol) : 토픽.. 2022. 11. 5. Spring Security 작동 순서 1. http로 로그인 요청 2. 로그인 인증 요청이라면 UsernamePasswordAuthenticationFilter(이하 AuthencicationFilter)가 요청을 가로채 전달된 username, password 파라미터를 이용해 UsernamePasswordAuthenticationToken 인증 객체를 만든다. 3. 인증 객체를 인증하기 위한 AuthenticationManager 에 넘기고 인증을 위임한다. 4. AuthenticationManager 를 구현한 ProviderManager는 스프링 시큐리티가 기본적으로 제공하는 AuthenticationProviders에 인증 객체를 전달한다. 5. 인증에 사용되기 적합한 AuthenticationProvider 가 존재하면(여기는 D.. 2022. 10. 13. 스프링 부트 동작 원리 1. 내장 톰캣 - 스프링에는 톰켓이 내장 되어있어서 따로 설치할 필요 없이 바로 실행가능 하다. A와 B가 서로 메세지를 주고 받기 위해서는 OS에서 제공하는 소켓이 필요하다. 예를들어 A가 5000번 포트번호로 최초의 연결 용도로 소켓을 오픈한다. B가 A의 IP주소와 포트번호를 통해5000번 포트에 연결을 성공하면, 무작위 포트 번호로 새로운 소켓을 만들고, 5000번 포트는 연결이 끊긴다. 이때 5000번 포트로 다른 사용자의 연결 요청을 계속 받기 위해서 새로운 포트와의 통신을 다중 스레드를 이용한다. 소켓 통신의 장점은 연결이 끊어지지 않는다는 점, 단점은 그 때문에 연결이 늘어날 수록 부하가 크다는 점이다. HTTP - 소켓 통신은 계속 연결되어 있기 때문에 사용자가 늘어남에 따라 부하가 커.. 2022. 10. 9. Spring IoC IoC = inversion of control : 제어권의 역전 일반적인 경우 의존성에 대한 제어권을 자기 자신이 가진다. 의존관계는 간단히 말해 new 라는 키워드를 통해 생성된다. public class Sample { private Samsung samsung = new Samsung(); } 의존성 역전(Inversion of Control) -Ioc란 inversion of Control의 약어로, 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성 하게하여 가독성 및 코드의 중복, 유지보수를 편하게 할 수 있게 한다. SampleTest 라는 클래스에서 Samsung 객체를 생성한뒤 Sample 클래스의 생성자로 주입시켜준다. 여기서 Sample이 직접 Samsung을 생.. 2022. 10. 9. DI(Dependency Injection) DI(Dependency Injection) - 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. DI(의존성 주입)을 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다. 방법1 ex) class Dogs{ private String DogName; private int DogAge; public Dogs(){ } public Dogs(String DogName, int DogAge){ this.DogName = DogName; this.DogAge = DogAge; } public String getDogName(){ return this.DogName; } public int getDogAge(){ .. 2022. 10. 9. Memo api 구현 최대한 lombok 없이 구현해 보았다. Memo.java @Entity public class Memo extends Timestamped{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(nullable = false) private String username; @Column(nullable = false) private String contents; // 파라미터가 있는 생성자를 하나라도 정의하게 되면 // 더이상 기본생성자를 생성하지 않기때문에 기본생성자를 꼭 만들어줘야한다. // @NoArgsConstructor 을 사용하는 이유 public Memo(){ } public Memo(MemoRequestDt.. 2022. 10. 7. Spring 서버에서 객체를 JSON으로 변환 후 응답하기 JSON 응답 클라이언트는 서버를 거쳐서 DB에 접근한다. 클라이언트가 DB에서 필요한 정보를 얻기 위해, 서버에게 데이터를 요청하면 서버에서는 클라이언트가 필요한 데이터 또는 그 데이터가 포함된 데이터를 보내준다. 이 때, 서버가 보내주는 데이터는 클라이언트가 해석하기 쉬우면 좋고, 내용이 간결해서 전송속도가 빠르면 좋을 것입니다. 그래서 사용하는 데이터의 형식 중 대표적인 하나가 JSON입니다. Jackson 라이브러리 는 JAVA Object 형태의 값을 데이터 구조를 표현하는 방식인 XML 또는 JSON 형태로 만들어 보낼때 사용하는 라이브러리다. Jackson 라이브러리 특징 - XML/YAML/CSV 등 다양한 형식의 데이터를 지원 - 스트림 방식으로 속도가 빠르며 유연하고, annotatio.. 2022. 10. 6. 이전 1 다음