프로그래밍/JAVA Spring 37

버저닝 ... 2

⬇️버저닝 ... 1편⬇️ 버저닝 ... 안드로이드와 협업을 할 때 버저닝은 필수적이다. 왜냐하면 죽어도 앱 업데이트를 안하는 사람들(대표적으로 나)가 있기 때문 올해 중순까지만 해도 카카오톡 업데이트를 안해서 보이스톡 기능 finger-ineedyourhelp.tistory.com 포스팅 이후에 팀원들과 버저닝에 대해 토의하는 시간을 한번 더 가졌다. "호환성"과 "추후에 강제 업데이트하는 상황"에 대해 생각을 더 해보다가 이야기가 나왔던 것인데, (Major).(Minor).(Patch)에서 Major 버전을 언제 올릴지가 주된 토의 내용이었다. - 기존 특정 기능에 대한 API가 바뀌면 Major를 올린다. 예를들어 회원정보조회 API가 바뀌며 Major 버전을 1에서 2로 올릴때, 서버에서는 1과..

버저닝 ...

안드로이드와 협업을 할 때 버저닝은 필수적이다. 왜냐하면 죽어도 앱 업데이트를 안하는 사람들(대표적으로 나)가 있기 때문 올해 중순까지만 해도 카카오톡 업데이트를 안해서 보이스톡 기능을 못썼다. 지금 쿠팡앱 켜도 맨날 업데이트 하라고 하는데 이악물고 무시중... 핸드폰 저장공간이 부족한 탓이다. 하지만 죽어도 게임은 못지움. 아무리 권태기가 오더라도 언젠간 다시 돌아가기 때문 어쨌든 안드로이드 앱의 버전은 1.1.2 이런 형식인데 (Major).(Minor).(Patch) 이렇게 구성된다. 우리 이돈이면 팀은 대충 Api가 바뀌어서 버전 호환이 안되면 Major 버전이 올라가고, 기존의 Api는 바뀌지 않고 새로운 Api가 추가되거나 비즈니스 로직이 변경되는 정도에서 끝나면 Minor 버전이 올라가고, ..

Servlet과 DispatcherServlet

정적말고 동적으로 정보를 처리해보자! Servlet 서블릿 컨테이너에는 여러 서블릿이 모여있다. 웹서버는 클라이언트로부터 요청을 받으면 서블릿 컨테이너 속의 적절한 서블릿에게 요청을 처리"해줘"를 시전 한다. 서블릿은 그걸 처리해주는 역할이다. ServletContainer 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 하는데, 대표적으로는 톰캣이 있다. 서블릿 컨테이너는 서블릿과 웹 서버가 요청과 응답을 주고받을 수 있도록 해준다. 서블릿 컨테이너는 서블릿을 관리한다. 서블릿이 필요할 때, 메모리에 해당 서블릿이 없다면 인스턴스화해서 메모리에 올린다. 그리고 나중에 종료도 시켜준다. DispatcherServlet 그렇다면 웹서버가 보내준 요청을 처리할 적절한 서블릿을 어떻게 찾느냐? Spring MV..

[Spring 스프링] 스프링은 뭐지? 왜 스프링을 쓸까?

우테코 레벨2를 시작하는 처음에 궁금했던 내용인데, 스프링 사용법과 미션 구현에 쫓기다가 궁금증을 해결하지 못하고 레벨2가 끝나버렸다. 거기다가 레벨 인터뷰때 도기가 이 질문을 해줘서 나의 빈공간을 잘 찔러주었다. 이렇게 궁금증 해소를 미루던 와중에! 이번 방학때 인프런에서 김영한님의 강의를 듣다가 어느정도 가닥이 잡힌 것 같아서, 생각난김에 이번에 알게된 내용을 정리 해보려 한다. 스프링은 뭐지? 🧐 스프링? 스프링은 여러가지 기술들의 모음이다. 스프링에서 핵심이 되고, 필수적으로 사용되는 기술로는 스프링 프레임워크와 스프링 부트가 있고, 선택적으로 더 많은 기술들을 적용할 수 있다. 스프링 사이트에서 다른 기술들로는 뭐가 있는지 확인할 수 있다. 🧐 스프링 프레임워크? 스프링에서 핵심이 되는 것이 스..

[Spring 스프링] 외부 파일을 이용한 Configuration 그런데 이제 @PropertySource와 @Value를 곁들인

[Spring 스프링] Java기반 Configuration Java 기반으로 빈을 등록할 수 있다. // Java-based Configuration을 하기 위한 클래스로 지정 @Configuration public class AuthenticationPrincipalConfig { // AuthService 빈을 등록 @Bean public AuthService authService() { return new Aut finger-ineedyourhelp.tistory.com 지난번에 Java기반 Configuration을 하는 방법을 포스팅 했다. 하지만 여기에 추가로 properties 파일에 있는 값이 필요할 때가 있을 수도 있다. 예를 들면 다음 사진에서 security-jwt-token-sec..

[Spring 스프링] Java기반 Configuration

Java 기반으로 빈을 등록할 수 있다. // Java-based Configuration을 하기 위한 클래스로 지정 @Configuration public class AuthenticationPrincipalConfig { // AuthService 빈을 등록 @Bean public AuthService authService() { return new AuthService(); } // AuthenticationPrincipalArgumentResolver를 빈 등록하고 authService에 대한 의존성을 주입 @Bean public AuthenticationPrincipalArgumentResolver authenticationPrincipalArgumentResolver() { return new..

[Spring 스프링] xml기반 Configuration

xml 파일로 빈을 등록할 수 있다. 태그 빈 객체를 만들 때 사용 id 속성: 해당 빈 객체를 식별하기 위한 고유 식별자 class 속성: 해당 빈 객체의 클래스 경로 태그 해당 빈 객체의 프로퍼티를 설정하는 데 사용 name 속성: 해당 클래스 내에 선언된 맴버 변수 중, 의존성 주입을 할 변수 이름 ref 속성: 의존하는 빈의 id public class UserService { private UserRepository userRepository; public void setUserRepository(UserRepository userRepository) { this.userRepository = userRepository; } public String sayHello() { return "hell..

[Spring 스프링] HandlerMethodArgumentResolver 알아보기

ArgumentResolver는 요청으로 들어온 값을 원하는 객체로 만들어서 컨트롤러에 전달해 주고 싶을 때 사용한다. 다음은 ArgumentResolver를 구현할 때 사용되는 HandlerMethodArgumentResolver 인터페이스이다. public interface HandlerMethodArgumentResolver { boolean supportsParameter(MethodParameter parameter); @Nullable Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBind..

[Spring 스프링] HandlerInterceptor 알아보기

인터셉터는 전체 path, 또는 특정 path에 대하여 컨트롤러가 실행되기 전 후로, 요청과 응답을 가로채서 적절한 전/후 처리를 하도록 도와준다. 핸들러에 사용자 인증과 같은 중복 코드가 존재할 때, 이를 인터셉터로 옮기면 핸들러의 중복코드를 줄일 수 있다. 다음은 인터셉터를 구현할 때 사용하는 HandlerInterceptor 인터페이스이다. public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } default void postHandle(HttpSer..

[Spring 스프링] HandlerInterceptorAdapter 말고 HandlerInterceptor

'org.springframework.web.servlet.handler.HandlerInterceptorAdapter' is deprecated HandlerInterceptorAdapter를 상속해서 인터셉터를 구현하고 있었는데, 노란색 블러가 거슬렸다. 스프링 5.3 버전 이상부터는 권장되지 않는다고 한다. 대신 HandlerInterceptor 또는 AsyncHandlerInterceptor 인터페이스를 직접 사용하라고 적혀있다. 참고로 HandlerInterceptorAdapter는 AsyncHandlerInterceptor를 구현한 것이다. 그나저나 @Deprecated 어노테이션으로 인해 노란 블러로 경고가 뜬 건가보다. 신기방기 그리고 안에 뭐 따로 구현된 것도 없다. @Deprecated..

1 2 3 4