🔻Back-End/Spring

"getMapping sayHello Method run" 이란 문자열을 Get방식을 통해 브라우저에 바로 출력하고자 한다 그냥 @Controller는 객체 정보를 바로 출력해 주는 것이 아니라 view(html이나 thymeleaf)를 반환하기 때문에 객체 정보가 나오지 않았다 이를 해결하기 위해서는 해당 컨트롤러 클래스의 어노테이션을 @RestController로 변경 @RestController = @Controller + @ResponseBody @ResponseBody는 객체 정보를 출력해줄 수 있는 어노테이션(view가 아니라 data) ✏️String 리턴 ✏️instance 리턴
❗Rest REST(REpresentational State Transfer) 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것 자원(resource)의 표현(representation) 에 의한 상태 전달을 의미 ✏️자원의 표현 -자원: 해당 소프트웨어가 관리하는 모든 것 ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등 -자원의 표현: 그 자원을 표현하기 위한 이름 ex) DB의 학생 정보가 자원일 때, 'students'를 자원의 표현으로 정함 -url만으로 이 API가 어떤 기능을 할 것인지 추측 가능 ✏️상태(정보)의 전달 -URL로 데이터에 접근 -데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달 -JSON이나 XML을 통해 데이터를 주고 받음 -REST는 네트워크 ..
스프링 시큐리티를 적용 후 실행한 다음 결과를 보기 위해 localhost:8080로 들어갔더니 로그인하라는 창이 나왔다 다른 창으로 이동하려고 해도 계속 떠있어서 해결하려 한다 아이디엔 user를 비밀번호는 스프링을 실행하면 알려준다
❗Spring boot -스프링 부트는 단독 실행할 수 있고, 상용화 수준의, 실행 가능한 스프링 기반의 애플리케이션을 쉽게 생성 -java -jar 커맨드 또는 war로 배포가 가능한 자바 애플리케이션 생성에 스프링 부트를 사용할 수 있다 -내장된 Tomcat 없이 웹 애플리케이션을 실행할 수 있다 -많이 사용하는 라이브러리를 모아놓은 Starter POM 파일을 제공해서 쉽게 라이브러리를 관리한다 ❗Spring boot Starter 스프링부트는 스프링 프레임워크에서 제공하는 모듈의 복잡한 설정을 사용하지 않는 새로운 전략을 제공 모든 것이 쉽게 오버라이드 될 수 있으면서 어떤 것도 오버라이드할 필요가 없다 @SpringBootApplication = @Configuration + @EnableAut..
https://spring.io/ Spring makes Java simple. Level up your Java code and explore what Spring can do for you. spring.io ❗스프링 생태계 필수: 스프링 프레임워크, 스프링 부트 선택: 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드 자주 쓰는 프로젝트: spring framework, spring mvc, spring boot, spring data JPA ✏️스프링 프레임워크 -스프링의 핵심(core) 기능을 담고 있는 프로젝트 -핵심 기술: 스프링 DI 컨데이너, AOP, 이벤트, 기타 -웹 기술: 스프링 MVC, 스프링 WebFlux -데이터 접근 기술..
build.gradle에 의존성 추가 dependencies { annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" }
spring의 기본 logging 설정은 logback, 하지만 log4j2을 사용하려다 보니 에러가 발생했다 그래서 이 에러는 라이브러리가 중복되어 발생하는 binding 에러이다 1. gradle에서 SLF4J 의존성을 제거 configurations { all { exclude group: 'ch.qos.logback', module: 'logback-classic' exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j' } compileOnly { extendsFrom annotationProcessor } } 2. spring logging을 제거 configurations { all { exclude group: 'org.spr..
박스 친 부분에 원하는 gradle 버전을 적고 다시 싱크해준다
JWT토큰을 사용하기 위해 import io.jsonwebtoken.*;를 했는데 오류가 발생했다 1. gradle 버전 낮추기 https://lejljs.tistory.com/59 gradle 버전 변경 하는 방법!책 보며 gradle로 프로젝트 하면서 요즘 최신 gradle로는 전버전 기능들이 안되는게 있어 gradle다운그레이드 찾아보다가 하는법 올렸음!! 버전을 변경할 프로젝트 터미널(Alt + F12) 켠후 ./gradlew wrapper lejljs.tistory.com구글링 결과 gradle이 7이상은 사용할 수 없다고 해서 버전을 6번대로 내려주었다 2. gradle dependencies refresh 1번 방법으로 gradle 버전을 변경했지만 여전히 import되지 않았다 https:..
❗Annotation 사전상으로 '주석'이란 뜻 자바에서는 코드 사이의 주석처럼 쓰이며 특별한 기능을 수행하도록 함 프로그램에게 추가적인 데이터를 제공하는 메타데이터(meta data: 데이터를 위한 데이터) @를 통해 코드량이 감소하고 유지보수하기 쉬우며, 생산성이 증가함 ❗어노테이션 사용 순서 1. 어노테이션을 정의 2. 클래스에 어노테이션 배치 3. 코드가 실행되는 중 Reflection을 이용하여 추가 정보를 획득하여 기능 실행 ❗Reflection -Reflection: 프로그램이 실행 중에 자신의 구조와 동작을 검사하고, 조사하고, 수정하는 것 -프로그래머가 데이터를 보여주고, 다른 포맷의 데이터를 처리하고, 통신을 위한 serialization(직렬화)를 수행하고, building을 하기 위..
프로젝트를 DB와 연결하지 않고 서버를 실행하면 발생하는 오류이다 @SpringBootApplication을 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) or @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) @EnableTransactionManagement 로 바꿔준 후 스프링 실행!
❗이전 시간에 배운 것 멤버 객체와 서비스, 리포지토리를 만듦 서비스를 통해 멤버를 가입하고 리포지토리에 저장하고 정보를 꺼내올 수 있었음 테스트 케이스도 만듦 ❗오늘 배울 것 원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비 ❗컨트롤러 만들기 참고: 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다. 설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다. ❗스프링 빈을 등록하는 방법 1. 컴포넌트 스캔과 장동 의존관계 설정(@을 달아서 표시해줌) 2. 자바 코드로 직접 스프링 빈 등록하기
❗오늘 배울 것 비지니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 ❗비지니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) ❗회원 도메인과 리포지토리 만들기 ❗테스트 케이스 작성 MemoryMemberRepository를 제대로 작성했는지 확인하기 위한 테스크 케이스 작성 개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다. 자바는 JUnit이라는 ..
❗오늘 배울 것 정적 컨텐츠: 웰컴 페이지처럼 서버에서 하는 거 없이 파일을 웹 브라우저에 내려줌 MVC와 템플릿 엔진: html을 그냥 주는 것이 아니라 서버에서 프로그래밍해서 html을 동적으로 바꿔줌 API: json이라는 데이터 포멧으로 클라이언트한테 정보를 전달해주느 ㄴ것 ❗스프링 부트 정적 컨텐츠 기능 컨트롤러가 우선 순위를 갖기 때문에 먼저 컨트롤러에서 찾고 없으면 resource폴더에서 파일을 찾음 ❗MVC와 템플릿 엔진 MVC: Model, View, Controller 예전에 view와 controller를 분리하지 않는 방식(jsp, model1 방식)을 사용했지만 현재는 view와 controller를 분리해서 개발 ❗API 예제 ❗자주 쓰이는 API 방식
❗사전 준비물 Java 11 설치, IntelliJ 준비 ❗스프링 부트 스타터 사이트에서 스프링 프로젝트 생성 https://start.spring.io/ ❗ java 폴더 밑에 실제 패키지랑 소스파일 test 테스트 코드와 관련된 파일들이 들어가 있음 resources 폴더는 자바 코드를 제외한 프로퍼티나 xml 등이 들어가 있음 ❗라이브러리 Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다 ❗View 환경 설정 웰컴 페이지 생성(도메인만 누르고 들어왔을 때 보이는 화면) 스프링부트는 static/index.html을 올려두면 Welcom page 기능을 제공함 https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spr..
❗스프링 학습을 포기하는 이유 이론적인 것부터 접근해서 어려워 함 하지만 실제 동작하는 웹 어플리케이션을 먼저 만들어보며 공부하는 것이 좋음 ❗앞으로 배울 것 - 간단한 웹 어플리케이션 개발 스프링 프로젝트 생성 스프링부트로 웹 서버 실행 회원 도메인 개발 웹 MVC 개발 DB 연동 - JDBC, JPA, 스프링 데이터 JPA 테스트 케이스 작성
🚩이번주에 배울 것 1. 나만의 셀렉샵을 AWS RDS의 MySQL을 연결 2. 나만의 셀렉샵을 AWS EC2에 배포 3. 나만의 셀렉샵에 도메인을 붙이고 친구들에게 카톡으로 자랑 ❗RDS 구매하기 -AWS console로 이동 https://ap-northeast-2.console.aws.amazon.com/console/home?region=ap-northeast-2# https://ap-northeast-2.console.aws.amazon.com/console/home?region=ap-northeast-2 ap-northeast-2.console.aws.amazon.com -IntelliJ에서 확인하기 spring.datasource.url=jdbc:mysql://나의엔드포인트:3306/myse..
❗HTML, 이미지 파일 준비하기 ❗상품 검색 기능 만들기 -execSearch 함수 -addHTML 함수 ❗관심 상품 등록하기 저장하기를 누르면 관심 상품에 등록됨 -addProduct 함수 -setMyprice 함수 ❗관심 상품 보여주기 $(document).ready: 페이지가 모두 로드된 직후 실행할 자바스크립트 코드를 넣는 곳입니다. 일단 접속하면 관심 상품을 보여주어야 하기 때문에 showProduct 함수를 호출하고 있습니다. -showProduct 함수 -addProductItem 함수 ❗스케줄러 만들기 매일 새벽 1시에 관심 상품 목록 제목으로 검색해서, 최저가 정보를 업데이트하는 스케줄러 -ProductRestController 수정
❗프로젝트 설계하기 -필요한 기능 확인 1. 키워드로 상품 검색하고 그 결과를 목록으로 보여주기 2. 관심 상품 등록하기 3. 관심 상품 조회하기 4. 관심 상품에 원하는 가격 등록하고, 그 가격보다 낮은 경우 표시하기 키워드로 상품 검색하고 그 결과를 목록으로 보여주기 GET /api/search?query=검색어 List 관심 상품 등록하기 POST /api/products Product 관심 상품 조회하기 GET /api/products List 관심 상품에 관심 가격 등록하고, 그 가격보다 낮은 경우 표시하기 PUT /api/products/{id} id -3계층 설계하기 Controller ProductRestController: 관심 상품 관련 컨트롤러 SearchRequestControlle..
🚩이번주에 배울 것 1. Controller - Service - Repository 에 대해 자신감을 가지기 2. 자바를 이용해 API를 이용하는 방법을 익히기 3. 스프링 스케줄러를 이용하여, 서버에게 원하는 작업을 원하는 시간에 시키는 방법을 익히기 ❗기본기 다지기 3계층 숙달 스프링, 아니 개발의 핵심 중 하나가 분업과 느슨한 결합입니다. 각자가 맡은 바 책임을 다하면 기능이 온전히 작동하고, 느슨히 결합함으로써 유연성과 확장성을 가지기 때문이지요. 3계층은 분업과 느슨한 결합의 대표적인 예시이자, 스프링이 돌아가게 만드는 척추입니다. 깊게 파자면 끝없는 이론이 있지만, 지금은 그것보다 우선 손에 익게 하는데 집중하세요. 손에 익어서, "아 나도 웬만한 사이트는 노력하면 만들 수 있지!"라는 자신..
_니지
'🔻Back-End/Spring' 카테고리의 글 목록 (2 Page)