전체 글 106

[Spring Boot] @ConfigurationProperties 활성화시 @Profile 무시 에러

1. 에러 발생의도문제문제 원인 파악문제가 발생한 코드2. @ConfigurationProperties란?Externalized Configuration (외부 구성) Externalized Configuration 사용 (바인딩)@ConfigurationProperties3. 해결Bean 등록 방법 2가지@Configuration + @Bean@Component4. 결론1. 오류 발생의도Profile에 따라서 다른 Bean이 동작하게 하고 싶었다.@Profile 기능을 이용해서 아래 코드처럼 eng Profile이 활성화되면 해당 클래스가 구현되게 하고 싶었다.(profile에 따라서 서로 다른 클래스 구현)문제@ConfigurationProperties("eng"), @Profile("eng"), ..

Spring 2024.11.08

[Spring Boot] 01. Spring Boot Core (2) - 자동 구성과 외부 구성

5. Spring Boot 코드 살펴보기Spring Boot 동작 원리 알기 - 자동 생성 코드 살펴보기6. 자동 구성과 조건maven에 라이브러리 추가하기Auto Configuration(자동 구성) 동작 원리라이브러리 추가시 자동 구성Auto Configuration 에서 제외@Conditional@ConditionalOnXXX7. 외부 구성Externalized Configuration 사용 (바인딩)Spring Profile5. Spring Boot 코드 살펴보기Spring Boot 동작 원리 알기 (1) 자동 생성 코드 살펴보기 - pom.xmlspring-boot-starter-parentspring-boot 버전별로 지원하는 라이브러리 의존성 목록.spring-boot 버전을 업그레이드하면 ..

Spring 2024.11.06

[Java] Naming Convention: Camel Case, Pascal Case

Naming Convention코드 작성 시 변수, 함수, 클래스, 패키지 등 다양한 요소에 일관된 이름 규칙을 적용하는 것.코드의 가독성과 유지 보수성을 높일 수 있다.대표적으로 Camel Case와 Pascal Case가 있다. (1) Camel Case첫 글자는 소문자로, 이후 단어의 첫 글자는 대문자로 작성.변수명, 메소드(함수)명에 사용.ex) botName, sendMessage() (2) Pascal Case단어의 첫 글자를 대문자로 작성.클래스명, 인터페이스명에 사용.ex) public class Request, public interface Sender   참고: https://www.theserverside.com/answer/Pascal-case-vs-camel-case-Whats-t..

Java 2024.11.06

[Spring Boot] Lombok

1. LombokJava Library.반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 라이브러리.생성자, Getter, Setter, Builder, Logger 등 다양한 코드를 작성하는 과정을 제거해준다.  2. 자주 사용하는 Annotation Lombok 의존성 추가더보기더보기Lombok 의존성 추가 org.projectlombok lombok 1.18.34 @Getter해당 클래스의 각 필드에 대해 getter 메소드를 생성./* getName(), getAge() 자동 생성 */@Getterpublic class Example { private String name; private int age;} @Setter해당 클래스의 각 필드에 대해 setter 메..

Spring 2024.11.06

[Spring Boot] 01. Spring Boot Core (1) - Spring Boot 소개, IoC, DI

1. Spring Boot 소개Spring BootSpring FrameworkSpring Framework ModulesSpring Framework 특징Spring Boot 목표Spring Boot 시작Spring Boot 기능Spring Boot vs Spring Framework2. Spring Boot 프로젝트 생성 및 실행Spring Boot 프로젝트 생성Spring Boot 프로젝트를 실행하는 여러가지 방법3. Spring IoCIoC: Inversion of Control (제어 역전)Bean FactoryApplicationContextSpring BeanBean 등록Stereotype AnnotationSpring Bean 객체의 생명주기 설정4. 의존성 주입 (Dependency In..

Spring 2024.11.05

[Spring Boot] 디자인 패턴

디자인 패턴Factory Pattern: 객체 생성을 추상화하여, 유연성을 높이는 패턴.Strategy Pattern: 알고리즘을 캡슐화하여, 동적으로 교체할 수 있도록 하는 패턴.Singleton Pattern: 특정 클래스의 instance가 단 하나만 생성되도록 보장하는 패턴.Prototype Pattern: 새로운 객체를 생성할 때, 기존 객체를 복제하여 사용하는 방식으로 동작하는 패턴.Factory Pattern 예시 코드더보기 1. interface 생성public interface Shape { void draw();} 2. interface를 구현한 클래스 생성public class Rectangle implements Shape { @Override public void ..

Spring 2024.11.04

[Relational database] 10. 개념적 설계와 ER 모델

Chapter 1: Entity-Relationship ModelER 모델 개요Entity, Attribute, Entity SetRelation, Relation SetChapter 2: ER 모델 기능대응 수키 제약조건참여 제약조건약 개체 집합전문화와 일반화Chapter 3: 개념적 설계 고려사항ER 모델을 이용한 개념적 설계개체 or 속성개체 or 관계이전 관계 or 삼진 관계Chapter 1: Entity-Relationship ModelER 모델 개요DB 설계개념적 설계: Entity와 Entity 사이의 Relation 정의 -> E-R 모델 사용논리적 설계: Table과 Table 사이의 Relation 정의 -> 정규화물리적 설계: Disk에 Data가 어떻게 저장될 것인지 정의.ER 모델..

DB 2024.10.13

[Relational database] 07. 보안과 뷰 ***

Chapter 1: 데이터베이스 보안데이터베이스 보안 개요User 개체접근 제어재량 접근 제어특권(Privilege)필수 접근 제어실습 7-1: 사용자 생성 및 권한 제어Chapter 2: ViewView 개요View 생성과 삭제View에 대한 갱신실습 7-2: 뷰의 생성과 사용 및 보안 설정Chapter 1: 데이터베이스 보안데이터베이스 보안 개요안전한 DB 응용 설계시 고려하는 목표 3가지.보안(Securty): 정보가 권한 없는 사용자에게 누출되어서는 안된다.무결성(Integrity): 권한이 있는 사용자에 대해서만 데이터 수정이 허용되어야 한다.가용성(Availability): 권한 있는 사용자의 접근이 거부되어서는 안된다. User 개체DB의 개체에 대한 접근/삭제/갱신에 대한 권한이 부여.DB..

DB 2024.10.12

[DB] JPA vs MyBatis

1. 영속성(Persistence)데이터를 생성한 프로그램이 종료되어도 사라지지 않는 데이터의 특성.영속성을 갖지 않는 데이터는 메모리에서만 존재하기 때문에, 프로그램을 종료하면 모두 사라진다.메모리 상의 데이터를 파일 시스템, 관계형 DB, 등을 활용하여 영구적으로 저장해서 영속성을 부여한다.데이터를 DB에 저장하는 3가지 방법JDBC(Java Database Connectivity)Java에서 DB에 접속하고 SQL을 실행할 수 있게 해주는 Java 표준 API.Spring JDBCSpring Framework에서 제공하는 JDBC 모듈, JDBC의 복잡함을 간소화. ex) JDBC TemplatePersistence Framework: DB와 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장해..

DB 2024.10.08

[Java] String, StringBuilder, StringBuffer

1. String불변성(Immutable)new 연산자 vs literal 방식2. StringBuilder와 StringBuffer공통점 - 가변성(Mutable)차이점 - 동기화(Synchronization)활용 시점1. String불변성 (Immutable)Java에서 String 객체는 값이 할당되면 이 공간은 변하지 않는다.String이 변경될 때마다 새로운 메모리를 할당받는다.아래 예시처럼 값 변경시, String 값만 가리키는 주소가 달라진다.예시 코드public class Main { public static void main(String[] args) { String string = "String"; StringBuilder stringBuilder = ne..

Java 2024.10.06