본문 바로가기

Java

(110)
[Java/스프링] 주요 어노테이션 정리 (@빈 등록, 요청 및 응답, 트랜잭션 및 AOP, Spring Boot) 들어가며ℹ️ 어노테이션: Annotation, 메타데이터를 코드에 추가하는 방식으로 주로 코드에 대한 부가적인 정보를 제공합니다.메타데이터 제공: 어노테이션을 기반으로 컴파일러나 프레임워크가 동작을 수행합니다. (@Override)정보 전달: 컴파일러가 경고를 무시하거나, 특정 코드를 자동으로 생성하도록 도와줍니다. (@SuppressWarnings)런타임 시 동작: 일부 어노테이션은 런타임에서 리플렉션이라는 메커니즘을 통해 동적으로 처리됩니다. (@Retention)가독성 및 유지보수성: 코드에 명시적으로 특정 동작이나 설정을 표시하여 코드의 가독성과 유지보수성을 향상시킵니다. (@Deprecated)💡스프링 주요 어노테이션: Spring 프레임워크에서 자주 사용하는 주요 어노테이션은 애플리케이션의 ..
[Java/스프링 입문] AOP - AOP가 필요한 상황, 적용(공통 관심 사항, 핵심 관심 사항, @Aspect, @Around, joinPoint.proceed, @Bean, 프록시) 들어가며🎯 AOP: Aspect-oriented programming, 관점 지향 프로그래밍- Aspect: 흩어진 기능을 모을 때 사용하는 것- Concern: 서로 다른 클래스라고 하더라도 비슷한 기능을 하는 부분각 Concern 별로 Aspect를 만들어주고, 어느 클래스에서 사용하는지 입력해 주는 방식입니다. 우측 그림이 Aspect로 모듈화 한 것을 보여주는 것입니다. 각 모듈에는 Advice와 Pointcut이 있습니다.- Advice: 해야할 일, 기능- Pointcut: 어디에 적용해야 하는지 나타내는 것 (ex: 클래스 A의 w 메서드)- Target: 각 클래스, 즉 적용이 되는 대상 (ex: 클래스 A, B, C) 1. AOP가 필요한 상황1) 언제 왜 쓰는지?모든 메소드의 호출 시..
[Java/스프링 입문] 스프링 DB 접근 기술(3) - JPA, 스프링 데이터 JPA(persist, @Transactional, @Id, @GeneratedValue, JpaRepository) 들어가며🏗 JPA: 기존의 반복 코드 및 기본적인 SQL도 JPA가 직접 만들어서 실행해 줍니다.SQL과 데이터 중심의 설계 → 객체 중심의 설계로 패러다임을 전환할 수 있습니다. 개발 생산성을 크게 높일 수 있습니다.🚀 스프링 데이터 JPA: 위의 JPA 기술을 스프링에 한 번 감싸서 제공하는 기술입니다.(이는 JPA를 편리하게 사용하도록 도와주는 기술, 반드시 JPA에 대해 먼저 공부할 것)1. JPAℹ️ ORM: Object Relational MappingObject 즉 Java의 클래스(객체)와 RDM의 테이블을 연결한다는 의미입니다.이 두 개념을 서로 연결(Mapping)하여 마치 하나인 것처럼 관리하기 위한 방법론입니다.=> SQL문 작성없이 Java 코드만으로 DB에 데이터를 저장할 수..
[Java/스프링 입문] 스프링 DB 접근 기술(2) - 스프링 통합 테스트, 스프링 JdbcTemplate(@SpringBootTest, @Transaction, SimpleJdbcInsert) 들어가며🧪 스프링 통합 테스트: 스프링 컨테이너와 DB까지 통합한 테스트를 수행합니다. (단위테스트⭐⭐⭐)🛠 스프링 JdbcTemplate: 순수 JDBC와 동일한 환경설정을 하면 됩니다. 스프링 Jdbc Template과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해 주지만, SQL은 직접 작성해야 합니다.1. 스프링 통합 테스트1) @SpringBootTest, @Transactionpackage hello.hello_spring.service;import hello.hello_spring.domain.Member;import hello.hello_spring.repository.MemberRepository;import org.junit.jupiter.api...
[Java/스프링 입문] 스프링 DB 접근 기술(1) - H2 데이터베이스, 순수 JDBC(다형성, IoC컨테이너, DI, SOLID 중 OCP) 들어가며 🗄️ H2 데이터베이스: 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면을 제공합니다.🔌 순수 JDBC: 고대 개발자의 삶을 돌아보고, 객체지향적인 설계가 좋은 이유에 대해서 알아봅시다. 1. H2 데이터베이스1) 다운로드 및 설치https://www.h2database.com/html/main.html위 주소에서 원하는 버전의 H2 데이터베이스를 다운로드 합니다. (버전은 스프링 부트 버전에 맞춥니다.)아래와 같이 실행파일을 눌러 실행합니다. 2) 데이터베이스 생성데이터베이스 파일 생성 방법은 다음과 같습니다.최초 한번: jdbc:h2:~/test내장 모드로 데이터베이스에 접속합니다.데이터베이스가 애플리케이션 프로세스 내에서 실행되기에, 애플리케이션이 실행되는 동안에만 데이터베이스에 ..
[Java/스프링 입문] 회원 관리 예제 - 웹 MVC 개발, 홈 화면 추가/등록/조회(@Controller, @GetMapping, @PostMapping) 들어가며👨‍🔧 회원 웹 기능: 홈 화면 추가, 등록, 조회(@Controller, @GetMapping, @PostMapping)1. 홈 화면 추가ℹ️ 정적 콘텐츠 동작원리1. 웹 브라우저: localhost:8080 요청이 옵니다.2. 내장 톰캣 서버: 스프링 컨테이너에 관련 컨트롤러가 있는지 확인합니다. (@Controller)3. 내장 톰캣 서버: 관련 컨트롤러가 없다면, 정적 콘텐츠 파일을 찾습니다. (static 폴더 내 파일, index.html)4. 웹 브라우저: static에 있는 index.html을 렌더링합니다. 1) @Controller, home.html// HomeController.javapackage hello.hello_spring.controller;import org...
[Java/Bronze V] 킹, 퀸, 룩, 비숍, 나이트, 폰 - 3003, 배열, Scanner 클래스, for문 문제 설명동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.   주요 사용 개념배열⚠️배열은 같은 타입의 데이터만 저장할 수 있습니다. (int 배열은 int 값만 저장, String 배열은 문자열만 저장합니다.)한 번 생성된 배열의 길이를 늘리거나 줄일 수 없습니다. 배열 선언타입[ ] 변수;배열 생성값..
[Java/스프링] 스프링 컨테이너, 빈 (스프링의 싱글톤과 Java 싱글톤의 차이점) 들어가며🗒️ IoC: Inversion of Control, 의존 관계 주입(Dependency Injection)이라고도 합니다. 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 게 아니라 주입 받아 사용하는 방법을 말합니다. 1. 스프링 IoC 컨테이너, 빈1) 컨테이너(Container)💡 스프링의 컨테이너는 "객체(빈)를 넣을 그릇"이라고 할 수 있습니다. 이 그릇은 애플리케이션의 요구사항에 맞게 생성된 객체(빈)들을 담고 관리합니다. 이러한 객체들은 XML 설정 파일이나 어노테이션을 통해 정의되며, 스프링 컨테이너에 의해 관리됩니다. 왜 IoC 컨테이너라고 부를까? 전통적인 객체 생성 및 관리 방식과 다르게 객체의 생성, 초기화, 의존성 주입, 생명주기 관리 등을 개발자가 아닌 컨테이너가..

반응형