-
정리해보기 객체지향 객체지향 : 분업화, 하나의 세상을 이루기위해서 하나의 존재만이 있는 것이 아니라 여러 존재들이 협업하면서 세상을 이룸, 협업이 필요하다면 필요한 객체가 다른 객체에 메세지를 보내 요청함, 파일로 코드를 분리한 것과는 전혀 다른 개념임(저장 공간만 달리할 뿐 하나로 처리하는건 마찬가지) 객체지향의 장점 : 역할 별로 객체를 나누다보니 어떤 한 기능을 수정할 때 담당 객체의 코드만 수정해주면 됨 - 변경점이 하나로 모임, 변경사항이 생기더라도 유연하게 대처할 수 있음(코드 간의 의존성이 적기때문에 - 물론 객체지향적인 프로그래밍을 했다면),...
-
서버 성능 및 안정성 향상을 위해 고려해볼 수 있는 아키텍쳐 리버스 프록시 서버 앞 단에 위치하여 요청을 몸빵 하는 역할 : 단순 몸빵만 하는 것이 아니라 효율적인 처리와 보안성을 높여줄 수 있음 캐시 가능 : 정적인 자원에 대해 캐시를 해뒀다가 이후 구성요소로 가지않고도 바로 응답해줄 수 있는 장점이 있음 서버 보안 : WS, WAS 보안(감추기 가능) Nginx의 경우 리버스 프록시 역할을 할 수 있음 (Nginx가 아니더라도 다른 웹서버에서도 지원) 로드밸런싱 처리를 분산하기위해 N대의 웹서버, 톰캣을...
-
[프로젝트 개발] spring-security 리팩토링 커스텀 필터를 스프링빈으로 등록하기 : 스프링빈 컨테이너 - circular dependency 발생과 해결 커스텀 필터에서 스프링빈을 사용해야하므로 필터를 스프링빈으로 등록해야할 필요성이 생김 : 빈으로 등록하고 Config에서 @Autowired를 받으려고 했으나 필터 생성과정에서 AuthenticationManager를 등록해줘야하는데, Config에서 Manager 빈을 가지고 있으므로 Config가 빈으로 생성되지 못하면 Manager 빈을 가져오지 못하는 문제가 발생함 커스텀 필터는 매니져가 필요하고 매니져는 Config가 생성되어야 가져올 수 있다보니 결국 어느 한 쪽도 온전히 생성되어 빈으로 등록되지 못한 상황이라 로그에는 circular dependency라며 찍히고...
-
java-ims 파일 업로드 기능 만들기 먼저 자바 파일 IO부터 알아보기 파일 쓰기 jvm 데이터를 API를 통해 파일에 쓰기 FileOutputStream : 파일 쓰기 API, 생성할 때 경로를 지정하지않으면 해당 프로젝트 루트 경로에 생성됨(절대경로 지정이 아니면 프로젝트 루트 디렉토리를 기준으로 생성 혹은 쓰기) IO를 위한 자원 사용 후 해제까지 해줘야함 데이터 쓰기 : byte 타입(배열까지) - FileStream이라면 byte 단위 쓰기, FileWriter를 사용하면 문자, 문자열 입력가능 덮어쓰기와 붙여쓰기도 고려해야함 : 각 io API마다 덮어쓰기를 할 것인지 붙여쓰기를 할...
-
java-ims layerd architecture - 계층을 만들어놨으면 이용하기 계층을 만들어놨으면 뛰어넘으려고 하지말고 해당 계층을 거치도록 코딩하기 아래 코드의 상황은 IssueController에서 Milestone의 정보를 얻어야하는데, 곧바로 MilestoneRepository로 가지말고 서비스 계층을 거치도록(직접적으로 사용하지말자 - 중간 계층이 상황에 따라 요청에 따른 응답 결과를 달리할 수 있도록) @Controller @RequestMapping("/issues") public class IssueController { @Autowired private MilestoneService milestoneService; @GetMapping("/{id}") public String show(@PathVariable Long id, Model model) { model.addAttribute(getEntityName(ISSUE), issueService.get(id)); model.addAttribute(getMultipleEntityName(MILESTONE), milestoneService.get()); return String.format("/%s/show", getEntityName(ISSUE)); } } 통합테스트(AcceptanceTest) 할 때, 테스트 할 때...