일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링 입문(무료)
- 자바의 정석 기초편 ch1
- @Aspect
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch13
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch6
- 자바 중급1편 - 날짜와 시간
- 스프링 mvc2 - 로그인 처리
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch11
- 스프링 db2 - 데이터 접근 기술
- 게시글 목록 api
- jpa 활용2 - api 개발 고급
- 스프링 mvc2 - 검증
- 스프링 db1 - 스프링과 문제 해결
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch14
- 자바 기본편 - 다형성
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch4
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch7
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch9
- 스프링 mvc2 - 타임리프
- Today
- Total
목록전체 글 (362)
나구리의 개발공부기록
출처 : 인프런 - 스프링 핵심원리 - 기본편(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용 https://inf.run/kCYMv1. 스프링 탄생 배경2000년대 초반 자바의 표준 기술인 EJB 기술이 있었음EJB: 엔터프라이즈 자바 빈즈의 줄임말EJB는 당시의 여러 고급 기술들을 모아놓은 종합 세트 같은 느낌이였음(Transaction. Entity Bean(ORM)기술 등등)당시에는 오픈소스 같은 것들은 비주류 기술 취급을 많이 함하지만 EJB는 1대에 수천만원 할정도로 매우 비쌌고 어렵고 복잡하고 너무 느려서 오히려 순수한 자바로 다시 돌아가자는 말이 나올 정도 였음(Plan Old Java Object)두명의 개발자가 이 상황을 타파하기 위해 오픈 소스를 만듦..
스프링 JdbcTemplate 순수 JDBC와 동일한 환경설정을 진행JDBC API의 반복코드를 대부분 제거해주지만 SQL구문은 직접 입력해야 함JdbcTemplateMyBatisJdbcTemplateMemberRepository class 작성public class JdbcTemplateMemberRepository implements MemberRepository { private final JdbcTemplate jdbcTemplate; // @Autowired(생성자가 1개만 있으므로 생략가능) public JdbcTemplateMemberRepository(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(da..
H2데이터베이스 설치 https://www.h2database.com 접속 후 다운로드 후 압축해제(Mac ver.)터미널 접속 -> 압축해제폴더/bin 으로 경로 이동cd 폴더의경로/bin권한 부여 : chmod 755 h2.sh실행 : ./h2.sh -> 잠시후 웹사이트 이동 -> 연결 클릭만약 홈페이지가 안뜬 다면 아래 이미지 url 중 localhost 부분이 ip로 작성 되어있을 텐데 localhost로 변경왼쪽 상단 빨간 N 모양을 클릭하면 나갈 수 있음 아래의 터미널 창을 끄면 DB가 종료됨새로운 터미널을 열어 Home(터미널을 키면 초기 위치인 Home 디렉토리)에 test.mv.db 파일이 있는지 확인H2데이터베이스 설치 이후 접근 방법 -> JDBC URL을 아래 이미지처럼 변경 후 연..
컴포넌트스캔과 자동 의존관계 설정 회원 컨트롤러가 회원서비스를 통해서 회원가입 및 데이터 조회를 해야 함 (서로 의존관계가 있다고 표현)멤버 컨트롤러 작성 @Controller 애노테이션을 생성하면 스프링이 작성된 클래스의(컨트롤러) 객체를 생성해서 가지고 있음해당 작업을 스프링 컨테이너에서 스프링 빈이 관리 된다고 표현 함생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어줌-> 의존 관계를 외부에서 넣어주는 것을(Dependency Injection) 의존성 주입이라고 함package start.startspring.controller;import org.springframework.beans.factory.annotation.Autowired;import or..
비즈니스 요구사항 데이터 : 회원ID, 이름기능: 회원 등록, 조회아직 데이터 저장소(DB)가 선정되지 않음(가상 시나리오)같은 이름이 있는 중복 회원은 안됨일반적인 웹 애플리케이션 계층 구조컨트롤러 : 웹 MVC 혹은 API의 컨트롤러 역할서비스 : 핵심 비즈니스 로직 구현리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리도메인: 비즈니스 도메인 객체 ex) 회원, 주문 등등 주로 데이터베이스에 저장하고 관리 됨클래스 의존 관계 데이터 저장소가 선정되지 않아 인터페이스 작성하여 구현 클래스를 변경할 수 있도록 설계개발진행을 위해 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 회원 도메인과 리포지토리 만들기 도메인 class 작성package start.sta..
정적 콘텐츠 파일을 그대로 웹브라우저에 내려주는 것 IntelliJ로 정적 콘텐츠 생성~resources/static 에 html파일을 생성 후 html코드 입력 후 실행 -> localhost:8080/파일명.html 접속정적 콘텐츠 입니다 나굴나굴동작 원리(간단설명)웹브라우저에서 주소입력톰캣 내장 서버가 요청을 받음스프링에서 먼저 파일명과 관련된 컨트롤러를 찾음(맵핑이 된 컨트롤러가 없으면 4번)내부에 있는(resources) 파일명.html 파일을 찾음 -> 있으면 그대로 반환MVC와 템플릿 엔진 - 가장 많이 하는 방식 Model, View, Controller = MVC (템플릿 엔진을 하기 위함)HTML을 서버에서 프로그래밍 해서 동적으로 바꿔서 내려줌 (템플릿 엔진 - 과거의 jsp, ph..
강의 기반Java 17 or 21 (강의 영상에는 11이지만 업데이트 됨) - 해당 강의는 21로 진행IntelliJ (이클립스로 해도 됨)스프링 부트 3.0 이상 (2.x에 대한 지원이 종료 되었음)프로젝트 만들기스프링부트로 프로젝트 생성https://start.spring.io 접속스프링부트 기반으로 스프링 관련 프로젝트를 만들어 주는 사이트(스프링에서 운영)설정Project : Gradle - Groovy (과거에는 Maven을 많이 썼으나 요즘은 gradle로 많이 넘어옴)Language : JavaSpring Boot : SNAPSHOT,MI 등이 붙지않은 버전 중 최신버전SNAPSHOT,M1 등이 붙은 버전은 비공식 버전Project MetadataGroup : 대부분 기업 도메인명을 작성 ..
1) collect() - 최종연산Collector를 매개변수로 하는 스트림의 최종연산 (Collector는 인터페이스)Collector를 구현한 Collectors클래스의 메서드를 인수로 사용할 수 있음Object collect(Collector collector) // Collector를 구현한 클래스의 객체를 매개변수로Object collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) // 잘 안쓰임2) Collector - 인터페이스수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스supplier(), accumulator()가 핵심 public interface Collector { // T(요소)를 ..
1) OptionalT타입 객체의 래퍼클래스이며 간접적으로 null을 다루고 코드를 간결하게 함null을 직접 다루는 것은 위험(NullPointerException 발생) 하기 때문에 null체크을 항상 체크해야하는데 if문으로 항상 null을 체크하게되면 코드가 지저분해지게 되어 Optional을 반환타입으로 자주 사용함public final class Optional { private final T value // 모든 종류의 객체를 저장 가능(참조형), null포함 ...} (1) Optional객체를 생성하는 다양한 방법of는 null을 허용하지 않고 ofNullable은 null을 허용String str = "abc";Optional optVal = Optional.of(str)..
1) 스트림의 연산들(1) 스트림의 중간연산 요약중간연산설명Stream distinct()중복을 제거Stream filter(Predicate predicate) (조건식 입력)조건에 안 맞은 요소를 제외Stream limit(long maxSize)스트림의 일부를 잘라냄Stream skip(long n)스트림의 일부를 건너뜀Stream peek (Consumer action) (forEach 와 비슷)스트림의 요소에 작업수행Stream sorted() (기본정렬)Stream sorted(Comparator comparator) (정렬기준을 입력)스트림의 요소를 정렬StreamDoubleStreamInt StreamLongStreammap(Function mapper)mapToDouble(ToDouble..