Back-End
자바8 - 함수형 인터페이스와 람다 표현식에 대해서 간단하게
함수형 인터페이스는 추상메소드가 1개 일 경우를 함수형 인터페이스라고 합니다. public interface Test { void go(); } 이렇게 Test라는 인터페이스에 추상메소드가 한개이니 이 인터페이스는 함수형 인터페이스 입니다. public interface Test { void go(); void gogo(); } 그럼 이렇게 추상 메소드가 두개 일 경우는 함수형 인터페이스 일까요??? 아닙니다. 추상메소드가 두개 이므로 이 인터페이스는 함수형 인터페이스가 아닙니다. * 대신 추상 메소드 말고 static 메소드와 default 메소드가 있습니다. 다른 형태를 포함하지만 추상 메소드가 한개인 인터페이스는 함수형 인터페이스 입니다. public interface Test { void go()..
스프링 Cookie
사용자 웹 브라우저에 저장되는 데이터 요청이 발생 했을 때 웹 브라우저는 쿠키에 저장된 정보를 서버에 전달하게 된다. 만약 응답 결과로 쿠키 정보가 전달되면 웹 브라우저가 쿠키에 저장하게 된다. 쿠키는 사용자 브라우저에 저장되는 것이므로 브라우저가 전달 해 줄 때만 쿠키 정보를 사용 할 수 있다. Cookie 저장 서버측 코드로 쿠키에 데이터를 저장할 수 있는 방법은 없다. 브라우저로 보낼 응답 결과에 저장할 쿠키 정보를 담아 보내면 브라우저에 의해 쿠키가 저장된다. Spring MVC에서 쿠키 저장은 Servlet/JSP에서 사용하는 방법으로 처리한다. Cookie 읽어오기 쿠키 정보는 브라우저가 요청을 발생 시켰을 때 요청 정보에 같이 담아서 서버로 전달해 준다. Servlet/JSP 에서는 쿠키 정..
스프링 ApplicationScope 빈주입
Bean을 정의 할 때 application scope 로 정의하면 서버가 가동될 때 자동으로 주입된다. 주입된 Bean은 주입만 이루어지는 것이므로 application 영역에 저장되지는 않는다. 서버가 가동 될 때 자동 주입 되는 것이므로 @Lazy를 설정하지 않아도 된다. Application Scope java 방식은 @ApplicationScope 를 사용 xml 방식은 bean을 정의 할 때 scope="application"으로 설정 @Configuration public class RootAppContext{ @Bean //@Bean("application2") @ApplicationScope public MemberDTO member() { return new MemberDTO(); } ..
스프링 Application Scope
서버가 가동될 때부터 서버가 종료되는 시점까지의 범위를 Application Scope라고 부릅니다. Application Scope 동안 사용할 수 있는 메모리 영역이 만들어지며 ServletContext라는 클래스 타입의 객체로 관리됩니다. ServletContext에 저장된 데이터나 객체는 서버가 종료되기 전까지 서버는 웹브라우저에 관계 없이 동일한 메모리 공간을 사용하게 된다. ServletContext HttpServletRequest 객체로 부터 추출이 가능하다. Controller 에서 주입 받을 수 있다. public String test(HttpServletRequest request){ ServletContext application = request.getServletContext()..
스프링 Session 빈 주입
Bean을 정의할 때 session scope로 정의하면 브라우저가 서버에 최초의 요청을 보낼 때 Bean 객체가 주입된다. 그 이후로는 다시는 주입되지 않는다. 한번 주입된 객체를 계속해서 사용하는 것이라고 보면 된다. 주입된 Bean은 주입만 이루어지는 것이므로 sesion 영역에 저장되지는 않는다. java 방식은 @SessionScope xml은 scope="session" config 패키지를 생성하고 RootAppContext 클래스를 만든다. 모든 빈 주입은 여기서 이루어지게 된다. @Configuration public class RootAppContext{ @Bean @Session //빈이 주입되는 시기가 세션 요청이 발생했을 때 public MemberDTO member() { ret..
스프링 Session
Session 브라우저가 최초로 서버에 요청을 하게 되면 브라우저당 하나씩 메모리 공간을 서버에게 할당하게 된다. 이 메모리 영역은 브라우저당 하나씩 지정되며 요청이 새롭게 발생하더라도 같은 메모리 공간을 사용하게 된다. 이러한 공간을 session이라고 부른다. 이 영역은 브라우저를 종료 할 때 까지 서버에서 사용할 수 있다. SessionScope 브라우저가 최초의 요청을 발생 시키고 브라우저를 닫을 때 까지를 SessionsScope라고 부른다. session 영역에 저장되어 있는 데이터나 객체를 자유롭게 사용 할 수 있다. public String test(HttpServletRequest request){ HttpSession session = request.getSession(); sessio..
스프링 Request Scope 빈 주입
@Autowired를 활용하여 Bean을 자동으로 주입 받을 수 있다. 스프링 코어에서 prototype과 singleton이 있다. Spring MVC에서는 추가로 request, session, application을 제공하고 있다. Request scope Bean을 정의 할 때 request scope 로 정의하면 요청이 발생할 때 마다 Bean 객체가 생성되어 자동으로 주입된다. 주입된 Bean은 요청 발생 시 주입만 이루어지는 것이므로 request 영역에 저장되지는 않는다. Xml로 Bean을 설정하고 byName으로 주입 받은 경우에만 request 영역에 자동 저장 된다. java 방식 @RequestScope 어노테이션 사용 xml 방식 bean을 정의 할 때 scope="request..
스프링 RequestScope
RequestScope 새로운 요청이 발생해 응답결과가 브라우저로 전달 될 때 까지 요청 정보가 담겨있는 Request 객체를 사용할 수 있습니다. 이러한 사용 범위를 RequestScope라고 부릅니다. HttpServletRequest 객체에는 서버 개발자가 필요에 의해 데이터나 객체를 저장 할 수 있고 ReuqestScope 내에서 사용이 가능합니다. @Controller public class TestController{ @GetMapping("/test") public String test(HttpServletRequest request){ request.setAttribtue("data1","문자열1"); return "forward:/test2"; //redirect 사용시 소멸 되기에 밑에..