본문 바로가기

분류 전체보기

(95)
spring / spring bean 등록하는 방법 2가지 _ 2 자바코드로 직접 스프링 빈 등록 project 안에 Config Class 생성 @Configuration : annotation 기반 환경설정을 돕는 곳 @Bean : Spring bean 등록 annotation @Configuration public class SpringConfig { @Bean public MemberService MemberService() { return new MemberService(MemberRepository()); //autowired }; @Bean public MemberRepository MemberRepository() { //MemberRepository 는 Interface이기 때문에 구현체인 MemoryMemberRepository를 return return new MemoryMembe..
spring / spring bean 등록하는 방법 2가지 _ 1 Component Scan(컴포넌트 스캔 및 자동 의존관계 설정) Spring Bean을 등록하는 방법에는 2가지가 있다. - component를 추가해서 spring이 알아서 찾도록 하는 방법과 - java code를 작성해서 spring아 등록해줘. 라고 이야기하는 방법 1. Component annotation ( 컴포넌트 스캔 및 자동 의존관계 설정) Spring이 뜰 때, Spring Container라는 통이 생김 이때 @Controller가 있으면 해당 객체를 생성해서 Container에 넣어서 관리 (= Spring Container에서 Spring Bean이 관리됨) 1) Component Scan @Controller, @Service, @Repository 등 Spring이 올라올때 Component Annotation이 있으면 Spring Cont..
spring / 회원 service test case 작성 (ifPresent, 지난번 repository를 만들어서 test 하는데 이어서 service를 만들어서 test case를 작성했다. service와 repository의 차이라고 하면 service: 비지니스에 의존해서 설계하기때문에 함수명도 비지니스스럽게 사용 repository : 단순히 기계적으로 개발스러운 용어를 많이 사용 service에서는 비지니스를 처리하는 부분으로 비지니스 처리하는 모든 로직이 들어간다고 생각하면 된다. 새로 배운것 1. Optional 객체를 통한 null체크 ifPresent memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); ..
Intellij / spring 단축키 정리 window 버전 ctrl +alert + v : 알아서 return 타입 및 변수 지정해줌 memberRepository.findByName(member.getName()); Optional result = memberRepository.findByName(member.getName()); shift + alert +ctrl + t : 자동으로 리팩토링 Extract Method 클릭 후 함수명 지정하면 따로 method로 해당 부분을 뺄 수 있다. memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); validateDuplicateMember(..
spring / 회원 repository test case 작성 domain은 DTO repository는 DAO 인듯 하다. domain에 Member라는 객체 생성(회원정보 - id, name) repository는 memberRepository를 interface로 만들어서 memoryMemberRepository가 implements 해서 사용 새로 배운것 1. Optional 객체 이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있습니다. 즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 됩니다. (출처 | http://tcpschool.com/java/java_stream_optional) Optional.ofNullable(store.g..
spring / 웹 개발 기초 1. 정적 컨텐츠 - 파일 그대로 웹브라우저에 내려서 보여주는 것 ex. html (가공없이 html 파일 소스 그대로 반환됨) 2. MVC와 템플릿 엔진 (html로 내리냐) - html을 그냥주는게 아닌, 서버에서 동적으로 바꿔서(rendering) 내리는 것 ex. jsp, php - MVC : Model View(화면그리기) Controller (viewResolver가 해당 html을 찾고, Html을 변환 후, 웹브라우저로 나타냄. 변환을 하고 안하고가 정적 컨텐츠와의 큰 차이) 3. API (data로 바로 내리냐) - 클라이언트랑 개발 시 서버에서 json 데이터 포맷으로 데이터 전달 - vue.js react 사용시 - 서버끼리 통신 시 (html 파일 아닌, 데이터 전달) @Respon..
spring / build 하는 방법 window에서 spring boot 프로젝트 build 하는 방법 cmd 창 open cd 프로젝트 #프로젝트까지 이동 gradlew build #build cd build/lib #빌드 폴더로 이동 java -jar [jar 파일명.jar] # lib 폴더안에있는 jar 파일 혹, 잘 안되는 경우 gradlew clean #build 폴더 자체가 사라짐 gradlew clean build #완전히 지우고 다시 만들어짐 명령어 ls로 폴더내 파일 확인 가능 이렇게 스프링이 뜨는걸 확인 할 수 있다. but, 이때 Itellij나 다른 IDE 에서 run 하는 경우 같은 8080 포트를 같이 사용이 불가능하므로 'Port 8080 was alreadt in use (이미 사용중입니다)' 라는 문구 뜸 -..
MariaDB / Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('aaa'@'%') does not exist Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1449 The user specified as a definer 에러발생상황 A 데이터 베이스를 다른 계정으로 옮기면서 백업 복원 과정을 거쳤는데 갑자기 소스가 안돌아간다. Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1449 The user specified as a definer : 이는 권한이 없다는 문제 현재 heidisql DB Tool을 사용중인데 정의자(F) 현재사용자가 이전 계정 아이디로 들어가있었다. DB 복원이후 이부분을 수정해줘야하는지 몰랐었다. 이후 문제 해결!