스프링 20

[Spring] 스프링 Properties 관리하기

* 스프링 Properties 정의하기 스프링 resource폴더 안에 datasource.properties를 정의해주고 그 안에 값들을 정의해 준다. 이 값들은 java config인 annotation으로 가져올 수 있다. 1234567891011121314151617181920212223242526272829@Configuration@PropertySource("classpath:datasource.properties")public class PropertyConfig { @Value("${jay.username}") String user; @Value("${jay.password}") String password; @Value("${jay.dburl}") String url; @Bean publ..

[Spring] SpringFramework Configuration, 각종 스프링 관련 면접 질문

Spring Bean Scope 스프링 빈에는 Scope를 정의할 수 있다. singleton : 싱글톤 스코프, 별도지정이 없으면 default로 들어가게 된다. 멀티 스레드환경에서 동시 접근이 발생하므로 상태 관리가 중요하다. prototype : 요청마다 새 bean instance를 생성한다. 멀티 스레드 환경에서 singleton보다 관리가 수월하다. request : single instance per http request. session : single instance per http session. [질문 목록] * 스프링의 configuration option 은?XML, Annotations, Java, Groovy, DSL * SOLID 의 S 의 기능?Single Responsib..

[SpringOneTour] 스프링을 만든 Pivotal사가 한국을 방문했다!

나는 시간날 때마다 항상 세미나 목록을 찾아본다. 가서 여러 뛰어난 개발자들의 강연을 듣고 오면 동기부여도 되고 재밌기 때문이다. 얼마전에 학교 기숙사에서 잠들기전에 sns에서 강연을 찾다가 Spring One Tour를 보게 되었다. 세상에 내가 지금 공부하는 프레임워크를 만든 분들이 직접 오신다는데 엄청난 기회였다. 근데 봤을 때 당장 내일 모레였다. 게다가 마감...ㅠㅠ 아 이걸 왜 지금 봤을까..... 진짜 여태 갔던 모든 세미나들 중에서 제일 가고 싶은 마음이 컸었다. 그래서 혹시나 하고 이메일을 보내 "학생인데 자리 없으면 바닥에서라도 듣고 싶다"고 염치 없지만 한 번 여쭤본다고 메일을 보냈다. 정말 감사하게도 자리는 줄 수 있다고 허락해주셨다. 진짜 너무 기뻤다. 목요일은 학교 풀 수업 날이..

[인턴 일지] 스프링 각종 코드 수정 작업 중, 잔 버그 해결

직원 등록 form 에서 3개의 페이지에 걸친 직원 들의 정보를 입력하고 REGISTER 버튼을 누르면 DB에 접근해서 데이터를 넣게 된다. 문제가 없을 줄 알고 DB에 엑셀을 이용해서 데이터를 넣고 있었다. 하지만 실제 사용자가 쓰는 곳은 웹 ui상이므로 나도 테스트 기간에는 데이터를 웹에서 직접 입력한다. 그런데 생각보다 많은 예외와 에러가 발생한다... validation 체크가 확실하게 다 되지 않아 unexpected 한 값이 넘어가는 것을 잡지 않아서 톰캣 로그에서 error가 터진다. 대표적인것은 Duplicate PRIMARY KEY 이다. DB 직원 정보 테이블은 SSN Number (소셜 시큐리티 넘버) 를 주요키로 가지게 된다. 이것은 중복된 값이 들어갈 수가 없다. 사용자는 첫 페이..

[인턴 일지] Amazon S3 이미지 업로드, 다운로드

원래는 각 직원 한 명당 사진 1개씩으로 정해졌지만 갑자기 한 사람당 여러 사진들을 업로드하는 기능이 있었으면 좋겠다고 한다. 자꾸 말 바꾸면 기간만 길어지고 개발진행에 방해가 될거같다고 했다. 예상은 하고 있었다. 결국 알겠다고 바꾸기로 했다. 그러면 아마존 버킷에 각 직원별로 폴더가 생겨야 할것이고 각 폴더에 동적으로 원하는 만큼의 이미지 또는 파일들이 올라가게 될 것이다. 오래 걸릴거 같다고 했는데 2시간만에 끝내버렸다. 제일 먼저 규칙을 정했다. 버킷내에 폴더 명 규칙은 Last Name + First Name + SSN Number (소셜넘버) 으로 정했다. 처음에는 그냥 소셜 넘버만으로 폴더를 만들기로했는데 생각해보니까 버킷을 열었을 때 가독성이 좀 떨어질 것 같아서 이름까지 넣기로했다. 이름..

[인턴 일지] Spring + Amazon S3 이미지 업로드

처음 프로젝트 요구사항 중 직원들의 특이사항을 그 자리에서 바로 핸드폰으로 찍어서 올리고 싶다는 것이었다. 예를들면 그 직원이 일하는 모습 또는 특정한 문서 사진 또는 기타 필요한 사진들을 말이다. 말처럼 뚝딱 되면 얼마나 좋을까. Project Plan을 줄 때 이 부분을 제일 길게 잡았다. 까다로운 만큼 오래 걸릴것 같았다. 이미지 처리에 있어서 저장소에 실제 파일이 저장되지만 데이터베이스에는 경로와 이름 사이즈 메타데이터 등 정보를 넣어야 하기 때문이다. 사실 조금 꼬인게 처음에 얘기를 나누었을 때 말한 기간안에 이 기능을 구현하지 못할것 같다고 했었다. 그래서 데이터베이스를 설계할 때 이미지 관련해서 테이블을 만들지 않았다. 그런데 할 수 있을 것 같아서 도중에 할 수 있다고하여 기능을 구현 중이..

[인턴 일지] 초기 개발 과정과 스프링 시큐리티 로그인

개발 과정에 있어서 많은 어려움들이 있었다. 에러 하나 터지면 수습하는데 얼마나 걸릴지 몰라 프로젝트 기간을 확실히 말을 하지 못했다. 원래 프로젝트는 due date을 정해놓고 에러가 터지면 그날 집에 가지 못하는 사이클을 경험했었지만 회사 자체가 야근을 싫어하고 미국에서의 work & life balance를 경험하고 싶었기 때문에 길게 잡았다. 그래도 재촉하기 떄문에 차분히 정리할 경황이 없었다. 포스팅 또한 정신이 없겠지만 중요하게 생각하는 과정과 에러해결 과정을 나열해 보겠다. 일단 Maven상에서 에러가나서 Package UI상에 빨간 엑스표시가 뜨는 문제이다. 지금은 안나오지만 저 프로젝트 그림 밑에 엑스표시가 나는 경우가 있다. 밑으로 dept를 쭉 펼치면 에러 tracking이 된다. 하..

[인턴 일지] 회사에서의 첫 프로젝트

미국에 온지 벌써 3달이 다 되어간다. 그 간 많은 일들이 있었고 힘든 일도 많았다. 생활 면부터 회사 문제까지도... 무엇보다 주위에 내 사람들이 없다는 것이 가장 힘들었다. 하소연하고 들어줄 사람이 없다는 것이 느껴본 경험이 없어서 그런지 더욱 서럽기도 하였다. 하지만 이제 괜찮다... 직속상관이 문제가 있어서 회사에 한동안 없어서 일을 시킬 사람이 없었다. 나는 회사 웹사이트 관리로 인턴을 온 것이고 시킬 사람들이 없었다. 처음에는 sns와 마케팅을 했다. 포토샵을 하면서 포스터를 만들고 업로드를 하였다. 그런데 마케팅과 경영 지식이 없어서 잘 하는지는 몰랐지만 그냥 그렇게 있었다. 직속상관이 오고 나서부터 일이 생겼다. 하지만 그는 전공자가 아니다. 나는 사장이 전공자가 아닌 회사에서 단기로 개발..

[IntelliJ] 스프링 프로젝트 초기 세팅하기 - (1)

인텔리J를 실행한다. 처음 new Project를 선택 후 Maven을 골라준다. 넥스트 때린다. groupId와 artifactId는 본인이 원하는 대로 우측 하단에 메이븐 자동추가할 것인지를 묻는다. 할 때마다 build하기 귀찮으므로 오토로 해준다. 그리고 pom.xml에 스프링에 관련된 dependency들을 추가해준다. org.springframework spring-webmvc 4.3.1.RELEASE org.springframework spring-web 4.3.1.RELEASE javax.servlet servlet-api 2.5 그럼 이렇게 External Libraries에 자동으로 jar파일들이 들어오게 된다. File -> Project Structure로 들어간다. Facets에 ..

스프링 게시판 페이징 구현하기 - (1)

이렇게 페이징을 구현하려면 먼저 페이지에 관련된 VO 객체가 필요하다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768public class CmmnVO { private static final long serialVersionUID = 1L; private long rows = 2; private long page = 1; private long totalPage; private long startPage = 1; private long endPage; private long pageScale = 3; public long ..

반응형