본문 바로가기

Back-end

(90)
OAuth에 대해서 간단히 설명 OAuth는 제3자 인증방식 입니다. 기본적으로 사용자는 서버를 신뢰할 수 없습니다. 그렇기 때문에, 민감정보를 작성하는 것을 꺼립니다. 서버 측에서도 마찬가지 입니다. 사용자의 민감정보를 관리하는 것은 리소스가 필요합니다. 그래서 OAuth를 사용해서 신뢰할 수 있는 서버에게 정보를 맡겨놓고 접근할 수 있는 권한을 주는 것이라고 이해하면 됩니다. 그러면 사용자 측에서는 민감정보를 굳이 입력하지 않고도 서비스를 사용할 수 있고, 서버측에서도 민감정보를 굳이 관리하지 않아도 되기 때문에 이점이라고 볼 수 있습니다.
[Spring] Spring Application을 구동할 때 메서드를 실행 방법 CommandLineRunner, ApplicationRunner를 구현한 클래스를 만들어서 실행시키는 2가지 방법이 있습니다. 또한 Spring의 ApplicationEvent를 사용하는 방법, @Postconstruct를 사용한 방법, InitializingBean 인터페이스를 구현하는 방법, @Bean의 initMethod를 사용한 방법이 있습니다.
[Spring] POJO란 무엇인가요? Spring Framework에서 POJO는 무엇이 될 수 있을까요? POJO(Plain Old Java Object)는 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말합니다. 프레임워크 인터페이스, 클래스를 구현하거나 확장하지 않은 단순한 클래스로 Java에서 제공하는 API 외에 종속되지 않습니다. 특정 규약과 환경에 종속되지 않아 코드가 간결하고 테스트 자동화에 유리합니다. 스프링에서는 도메인과 비지니스 로직을 수행하는 대상이 POJO 대상이 될 수 있습니다 스프링 애플리케이션은 POJO를 이용해서 만든 애플리케이션 코드라, POJO가 어떻게 관계를 맺고 동작하는지를 정의해놓은 설계 정보로 구분된다. 스프링의 주요 기술인 IoC/DI, AOP, PSA는 애플리케이션을 POJO로 개발할 수 있게 ..
[Java] 자바에서 null을 안전하게 다루는 방법 public method가 아닌 곳에는 assert를 사용하여 null을 방어할 수 있습니다. 또한 메소드의 인자를 받을 때 Objects.requireNonNull()을 사용하여 방어할 수 있습니다. 그리고 Optional을 사용해 리턴 타입에서 null을 반환하지 않도록 방어할 수 있습니다. 마지막으로 사전 조건과 사후 조건을 명확히 하여 계약에 의한 설계를 실천해야 합니다.
[Java] Mutable 객체와 Immutable 객체의 차이점 Mutable 객체는 변경 가능 객체이고, Immutable 객체는 불변 객체라고 흔히들 말합니다. Mutable 객체는 도메인 개체(도메인 클래스 혹은 엔티티)로 사용됩니다. Mutable 객체의 변경 메서드는 Command method라고도 부르며, 리턴 타입을 void로 정의합니다. 또한 void 리턴 타입의 어떤 상태를 변경하는 매서드는 모두 Command method의 상징입니다. Immutable 객체는 불변 객체이며 값 객체, 서비스 객체 등에 사용됩니다. Immutable 객체의 변경 메서드는 변경한 객체의 복사본을 반환해야 합니다. 불변 객체는 Thread-safe 하여 멀티 스레드 환경에서 사용 가능
[Java] 직렬화와 역직렬화 직렬화(Serializable)란 자바 시스템 내부에서 사용되는 객체, 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 데이터 변환하는 기술 역직렬화는 바이트로 변환된 데이터를 다시 변환하는 기술 자바 직렬화는 JVM의 메모리에서만 상주되어있는 객체 데이터를 영속화(Persistence)가 필요할 때 사용됩니다. 시스템이 종료되더라도 없어지지 않는 장점을 가지며 영속화된 데이터이기 때문에 네트워크로 전송이 가능합니다.
[Java] 강한 결합과 느슨한 결합 결합도는 의존성의 정도를 나타내며 다른 모듈에 대해 얼마나 많은 정보를 알고 있는지에 대한 척도입니다. 어떤 모듈이 다른 모듈에 너무 자세한 부분(구현 세부사항)까지 알고 있을 경우에 강한 결합도를 가진다고 합니다. 어떤 모듈이 다른 모듈에 대해 필요한 정보(인터페이스로 추상화된 고수준 정책)만 알고 있다면 두 모듈은 낮은 결합도를 가진다고 합니다. 객체지향 관점에서 결합도는 객체 또는 클래스가 협력에 필요한 적절한 수준의 관계만을 유지하고 있는지를 나타냅니다. 이러한 관점에서 강한 결합도는 반드시 지양해야 하며, 개발자가 적절한 결합도는 유지할 수 있도록 고민하고 설계해야 합니다.
[Java] try-with-resources try-with-resources는 자바 버전 7에 도입된 문법입니다. 자바 7 버전 이전에서 하나 이상의 리소스(java.lang.AutoCloseable을 구현한 객체 혹은 java.io.Closeable를 구현한 객체)를 사용할 경우 개발자가 임의로 finally문에서 ~~.close()를 사용하여 자원 해체를 시켜줘야 했습니다. 만약 개발자가 사용한 자원을 finally문에서 해제시켜주지 않고 누락시켰다면 자원이 해제되지 않은 채로 프로그램이 오작동하게 되고, finally문에서 자원을 해제 시켜주더라도 자원 해제를 위한 중복 코드가 발생하기 때문에 소스 코드의 가독성을 해지는 단점이 있었습니다. 이를 해결하기 위해 try()안에 사용할 리소스 객체를 명시적으로 선언하여 사용하면, try 블록 안..