728x90 전체 글138 인텔리제이 UTF-8 인코딩 설정 윈도우 운영체제로 인텔리제이를 사용할 경우 UTF-8 인코딩 설정이 필요합니다. 자바 내부 프로퍼티의 한글을 못 읽거나 실행 로그의 한글이 깨지는 등의 현상이 발생하기 때문에 file UTF-8 설정이 필요합니다. UTF-8 인코딩을 설정하면 프로젝트 내부에서 한글 문자를 사용할 수 있습니다. Ctrl + Alt + S를 눌러서 설정창에 진입하거나 File -> Settings 경로로 설정창을 열어줍니다. File Encodings 란에 진입하여, 인코딩 방식을 UTF-8로 설정합니다. 그 다음 vmoptions 파일을 수정하시면 됩니다. Help -> Find Action 클릭하고 Actions탭에서 Edit Custom VM Options를 찾습니다. -Dfile.encoding=UTF-8 를 추가합.. 2021. 9. 7. Spring Boot - AOP (Aspect Oriented Programming) AOP (Aspect Oriented Programming)관점지향 프로그램스프링 어플리케이션은 대부분 특별한 경우를 제외하고는 MVC웹 어플리케이션에서는 Web Layer, Business Layer, Data Layer로 정의. - Web Layer : REST API를 제공하며, Client 중심의 로직 적용- Business Layer : 내부 정책에 따른 logic을 개발하며, 주로 해당 부분을 개발- Data Layer : 데이터 베이스 및 외부와의 연동을 처리 AOP는 메소드나 특정 구역에 반복되는 로직들을 한 곳으로 모아서 코딩할 수 있게 해줍니다.비지니스 로직 이외의 반복되고, 일괄적으로 적용되고, 조건에 따라 변동될 수 있는 코드를 횡단관심이라고 합니다.이 횡단관심을 비지니스 로직으로부.. 2021. 9. 3. Spring Boot - IoC (Inversion of Control) IoC (Inversion of Control) 스프링에서는 일반적인 Java 객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에 모두 맡긴다. 즉, 개발자에서 프로임워크로 제어의 객체관리의 권한이 넘어 갔음으로 "제어의 역전"이라고 합니다. @SpringBootApplication 어노테이션을 붙이면 스프링 부트로 동작하게 한다는 뜻입니다. @SpringBootApplication 어노테이션 내부에는 다음과 같은 어노테이션이 존재합니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfigurat.. 2021. 9. 3. Spring Boot - DI (Dependency Injection) DI (Dependency Injection) 외부에서 객체 주입하면, 스프링이 객체의 생명 주기를 관리합니다. 개발자는 DI(주입)을 통해서 객체를 사용할 수 있습니다. 주입하는 주체는 스프링 컨테이너입니다. DI의 장점 의존성으로부터 격리시켜 코드 테스트에 용이합니다. DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트가 가능합니다. 코드를 확장하거나 변경할 때 영향을 최소화한다. (추상화) 순환참조를 막을 수 있다. // IEncoder.java // 인터페이스 public interface IEncoder { String encode(String message); } // Encoder.java // 사용할 객체 public class Encoder { private.. 2021. 9. 2. java - RequestHeader 프론트에서 HTTP 통신할 때 HTTP header에 데이터 보내기 개별 요청 시 $.ajax({ url: 'foo/bar', headers: { 'x-my-custom-header': 'some value' } ... }); // 예제 코드 출처 // http://daplus.net/javascript-js-%EB%98%90%EB%8A%94-jquery%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-ajax-%EC%9A%94%EC%B2%AD%EC%97%90-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EC%9D%98-http-%ED%97%A4%EB%8D%94%EB%A5%BC/ headers 변수에 map형태의 객체로 기술하면, HTTP 헤더로 .. 2021. 8. 31. 인텔리제이 자바 버전 변경하는 방법 api 프로젝트가 자바8버전으로 개발되어있고, 유지보수를 위해 인텔리제이 자바설정을 11에서 8로 변경해야하는 일이 발생했습니다. 인텔리제이 설정에서 SDK와 JRE을 변경해야했고, 다음과 같은 플로우로 해결했습니다. 참고로 gradle 버전도 현재 자바 버전이랑 호환되는지 여부를 확인해야합니다. File -> Settings에 들어가거나 ctrl + alt + s를 눌려 설정창을 띄웁니다. 1. Build Tools -> Gradle에서 Gradle JVM을 변경합니다. 저는 JVM11에서 JVM8로 변경했습니다. 2. Compiler -> Java Compiler에도 자바 버전을 체크해야합니다. 자바 버전에 맞게 설정을 맞춰주시면 됩니다. 다음으로 File -> Project Structure...으.. 2021. 8. 30. java - ObjectMapper ObjectMapper Request한 데이터를 객체 형태나 텍스트 형태로 변경하는 메소드를 소개하려고 합니다. ObjectMapper를 이용해서 JSON 데이터를 Object로 변환할 수 있으며, 반대로 Object를 JSON으로 변환할 수 있습니다. @RestController @RequestMapping("/api/objectMapper") public class ObjectMapperController { @PostMapping("") public void objectMapper(@RequestBody String name) throws JsonProcessingException { // Text JSON -> Object // Object -> Text JSON ObjectMapper objec.. 2021. 8. 29. java - PUT API PUT API리소스가 없으면 갱신하고 리소스가 이미 존재하면 업데이트를 하는 API입니다. PUT API는 구조상 POST API와 거의 유사합니다. @RestController @RequestMapping("/api/put") public class PutApiController { @PutMapping("") public PutRequestDto put(@RequestBody PutRequestDto putRequestDto) { System.out.println(putRequestDto); return putRequestDto; } } import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.d.. 2021. 8. 26. java - POST API @RequestBody vs @RequestParam @PostMapping("/post") public void post(@RequestBody Map requestData) { requestData.forEach((key, value) -> { System.out.println("key = " + key); System.out.println("value = " + value); }); } @PostMapping("/post2") public void post2(@RequestBody PostRequestDto requestData) { System.out.println(requestData); } post api는 get api와는 다르게 @RequestBody 어노테이션을 사용하여 body로 보내진.. 2021. 8. 26. java - GET API API 컨트롤러 시작하기 @RestController @RequestMapping("/api/get") public class GetApiController { ... } 컨트롤러 클래스위에 어노테이션 @RestController와 @RequestMapping를 붙여줍니다. @RestController은 컨트롤러로 쓰겠다고 선언하것이고 @RequestMapping 클라이언트에서 보낼 URI를 기술하면 됩니다. @RequestMapping vs @GetMapping @RestController @RequestMapping("/api/get") public class GetApiController { @GetMapping(path = "/hello") // http://localhost:9090/api/ge.. 2021. 8. 26. java - api 프로젝트 만들기 구글 api 확장 프로그램 설치 reat api client 검색 Talend API Tester - Free Edition https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm?utm_source=chrome-ntp-icon 스프링부트 initialize type - gradle Project Dependencies Web - Spring Web gradle 설정에서 sourceCompatibility = '11' 으로 되어있으면 다음과 같은 빌드에러가 발생합니다. sourceCompatibility = '1.8'로 설정하면 빌드 에러를 해결할 수 있습니다. src\main\r.. 2021. 8. 25. java - 전략 패턴(행위 패턴) Strategy Pattern 전략 패턴은 객체지향의 꽃이라고 불립니다. 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고 유사한 행위들을 캡슐화하여, 알고리즘을 별도로 분리하는 설계 방법을 의미합니다. 컨텍스트(Context) 클래스에 전략 객체를 담아서 사용하게 됩니다. 객체의 행위를 바꾸고 싶은 경우 컨텍스트(Context)를 직접 변경하는 것이 아닌 전략만 변경하여, 유연하게 확장하는 패턴입니다. SOLID 중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따릅니다. 전략 패턴의 단점 - Context(전략 사용자)의 코드 변경 없이 새로운 전략을 추가 할 수 있습니다. - 확장에 유리한 코드를 작성할 수 있습니다.. - 런타임에 전략을 변경시킬 수 있습니다. 전략 패턴의 단.. 2021. 8. 24. java - 파사드 패턴(구조 패턴) Facade pattern Facade는 건물의 앞쪽 정면이라는 뜻으로, 파사드 패턴은 건물의 뒤쪽은 모르는 형태를 뜻합니다. 여러개의 객체를 합쳐서 특정을 기능을 만들 때 사용합니다. 여러개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때, 중단에 facade라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식입니다. 여러개의 의존성을 파사드 객체 안 쪽으로 감추고 파사드 객체만 컨트롤해서 기능을 동작하는 것입니다. Facade pattern을 구현하기 위해서는 Facade는 자신이 가지고 있는 각 클래스의 기능을 명확히 알아야 합니다. 파사드 패턴의 예로 http 클라이언트를 들수있습니다. // FtpProtocol.java public clas.. 2021. 8. 24. java - 옵저버 패턴(행위 패턴) Observer pattern 관찰자 패턴은 변화가 일어났을 때 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다. 많이 보이는 곳은 event listener에서 해당 패턴을 사용하고 있다. 스윙이나 자바의 gui프로그래밍이나 안드로이드 프로그래밍할 때 이벤트리스너를 달게 되는데 이것이 바로 이벤트 옵저버패턴이다. 쉽게 말하자면 망을 보는 객체를 하나 만들어서 변화가 일어나면 망을 보는 객체가 변경 사항을 전달하는 것이다. // IButtonListener.java public interface IButtonListener { void clickEvent(String event); } // Button.java public class Button { private String name; pri.. 2021. 8. 23. java - 데코레이터 패턴(구조 패턴) 데코레이터 패턴은 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용합니다. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴입니다. 확장이 필요한 경우 상속의 대안으로도 활용하며, SOLID 중에서 개방폐쇄 원칙(OCP)과 의존역전원칙(DIP)를 따릅니다. Component - ConcreteComponent 과 Decorator 가 구현할 인터페이스이며, 두 클래스의 공통 기능을 담고 있습니다. - 사용자가 데코레이터 패턴은 사용해서 인스트턴스를 생성할 때 Component(인터페이스) 를 사용합니다. ConcreteComponent - 기본 기능을 구현할 클래스입니다. - Decorator를 통해 기.. 2021. 8. 23. 이전 1 ··· 3 4 5 6 7 8 9 10 다음 728x90