반응형


출처 : [ 이 글은

코드로 배우는 스프링 웹 프로젝트 

http://wonwoo.ml/index.php/post/1607

http://www.daleseo.com/lombok-popular-annotations

에서 참고하여 작성된 글입니다. ]


[ 코드로 배우는 스프링 웹 프로젝트 ]

이 책을 통해 Lombok에 대해서 알게되었다

 

Lombok을 이용하면 Java 개발 시 자주 사용하는 getter/setter, toString(), constructor 등을 자동으로 생성해 주므로 약간의 코드만으로도 필요한 클래스를 설계할 때 유용하다Lombok은 라이브러리에서 제공하는 어노테이션으로 코드에 적용할 수 있다.


먼저 Lombok 라이브러리 설치 방법부터 알아보자.

Lombok 다운로드는 http://projectlombok.org/download 에서 jar 파일 형태로 다운 받을 수 있다.


2018년 10월 현재 Lombok버전은 1.18.2 버전을 다운로드 할 수 있다.

다운받은 파일을 실행 시키면..


Lombok 설치 프로그램이 실행된다. default로 eclipse 경로가 잡혀있는데 STS에 설치하고 싶은 경우 Specify location... 을 클릭해서 STS가 설치되어있는 경로를 잡아주면 된다.


STS경로를 잡아주고 Install / Update 클릭Quit Installer 클릭

만일 Lombock을 설치한 후 바탕화면의 이클립스(STS) 바로가기가 정상적으로 동작하지 않는다면..

1. 이클립스가 설치된 경로에서 제대로 실행되는지 확인

2. 바탕화면의 바로가기 삭제 후 다시 생성

위의 과정을 수행한다면 문제없이 실행될 것이다.



그럼 Lombok 어노테이션에 대해서 하나씩 알아보자.


@Getter / @Setter

이름 그대로 getter와 setter를 생성해준다. 가장 많이 사용되는 어노테이션 중 하나이다.

1
2
@Getter @Setter
private String name;
cs

이처럼 필드에 어노테이션을 붙여주면, getter와 setter를 자동으로 생성해준다. 속성으로 value, onMethod 속성이 존재한다.

value의 경우 AccessLevel(접근제어) 지정을 통해서 접근 레벨을 제한할 수 있다.(PUBLIC, PROTECTED, PACKAGE, PRIVATE)

@Getter(value = AccessLevel.PRIVATE), @Setter(value = AccessLevel,PUBLIC)



@XXXArgsConstructor

생성자를 생성해주는 어노테이션이다. 3가지 종류가 있는데..

1. @NoArgsConstructor : 디폴트 생성자(파라미터가 없는 생성자)를 생성해주는 어노테이션

2. @AllArgsConstructor : 모든 필드의 생성자(파라미터로 받는)를 생성해주는 어노테이션

3. @RequiredArgsConstructor : 필수 생성자를 생성해주는 어노테이션



@EqualsAndHashCode

@EqualsAndHashCode 어노테이션은 hashcode와 equals를 생성해주는 어노테이션이다.

공통 속성으로 exclude, of, callSuper, doNotUseGetters가 존재한다.


@ToString

@ToString 어노테이션은 toString() 메서드를 생성해주는 어노테이션이다.

@EqualsAndHashCode와 마찬가지로 공통 속성으로 excludeofcallSuperdoNotUseGetters가 존재한다.


@EqualsAndHashCode / @ToString 공통 속성

▶ exclude : 제외시킬 변수명을 작성 → @EqualsAndHashCode(exclude={"field1", "field2"})

▶ of : 포함시킬 변수명을 작성 → @EqualsAndHashCode(of = "id")

▶ callSuper : 상위 클래스의 호출 여부를 묻는 속성 → @EqualsAndHashCode(callSuper = true)

▶ doNotUseGetters : getter 사용여부 확인(..?)


@Data

@Data@Getter, @Setter, @XXXArgsConstructor, @ToString, @EqualsAndHashCode 을 한꺼번에 설정해주는 어노테이션이다.

1
2
3
4
@Data
public class Test{
 
}
cs

클래스 레벨에 @Data어노테이션을 붙여주면 모든 필드를 대상으로 접근자와 설정자가 자동으로 생성된다.

final로 지정됐거나, @NonMull로 명시된 필드에 대한 값을 받는 생성자 메소드 코드를 생성한다.



[ 실습하면서 글 작성중이므로 변경사항이 있을 때마다 수정하겠습니다. ]

반응형
반응형


Spring Project 생성 후 환경설정을 어떻게 무엇을 해야하는지 알아보자.

본 글은 STS에서 실행한 글입니다.


1. Spring Legacy Project 생성 

Project이름 적어주고 Spring MVC Project 선택

그리고 Next> 클릭


package 적어주자.

※ 반드시을 기준으로 세단어 이상 적어주어야한다.

→ 마지막에 오는 단어가 context명이된다.

그리고 Finish 클릭


Finish를 하고나면 STS(이클립스) 오른쪽 하단에 보면 

빌드가 진행되면서 프로젝트가 생성된다.


2. pom.xml에서 버전 맞추기

생성한 프로젝트를 열어보면 밑에..

pom.xml을 열어보면 태그로 가득히 무엇인가 쭈욱 뜨는데 그 중...

이부분!

<java-version>사용하고 있는 jdk 버전</java-version> 


jdk버전 수정 후 해야할 일은..

프로젝트 우클릭 → properties 클릭

왼쪽 상단에 build를 치면 Java Build Path가 나오는데 클릭!



JRE System Library를 pom.xml에서 설정한 버전과 맞춰주자.

JRE System Library 클릭 후 Edit 클릭

Workspace default JRE로 default 설정 값으로 맞추거나

Execution environment에서 맞는 버전을 직접 선택한 후 Finish클릭


Apply and Close 클릭!


다시 pom.xml로 돌아와서..

▶ <org.springframework-version>..</org.springframework-version>

springframework를 사용할 버전에 맞춰주자.

필자는 5.0.7로 수정해주겠다.


그리고 junit 버전 수정을 해줄것인데.. 그전에 junit 라이브러리 추가부터 알아보자.

다시한번.. 

프로젝트 우클릭 → properties 클릭 → Java Build Path 클릭!

Add Library 클릭!

Junit 클릭 Next>

Junit4 선택해주고 Finish 클릭!

Junit4 추가된 것을 확인하고 Apply and Close 클릭!

Package Explorer에 JUnit4 추가되었다.

그리고 나서 pom.xml에 있는 junit버전을 변경해보자.

스프링 4.x 이상의 버전을 테스트 하기 위해서는 반드시 junit의 버전은 4.10 이상을 이용해야만 한다.

(해당없으면 그냥 넘어가도 됩니다.) 

pom.xml을 내리다 보면 <dependency> 부분에

junit이 보일것이다.

현재 4.7로 되어있지만 4.10이상으로 올려주자.

필자는 4.12로 변경하겠다.


[ 실습하면서 글 작성중이므로 변경사항이 있을 때마다 수정하겠습니다. ]

반응형
반응형

스프링은 환경설정하는게 너무 어렵다...


test폴더 class에서..

1
2
3
4
@RunWith(SpringJUnit4ClassRunner.class)
public class test{
 
}
cs


@RunWith(SpringJUnit4ClassRunner.class)


여기에서 에러가 났을 경우


pom.xml에서 


1
2
3
4
5
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.1.1.RELEASE</version>
</dependency>
cs

를 추가해주자.



반응형
반응형

[ @Setter(onMethod_ = @Autowired) Error ]


사진 출처 : https://cafe.naver.com/gugucoding

@Setter(onMethod_ = @Autowired)  에서 에러가 발생하였다. 

에러도움메시지에서는 버전에 따라 다르게 설정하는 방법을 알려주고 있었는데.. 그렇게 적용해도 해결될 기미가 안보였다.

책에서 제공해주는 카페에 들어가서 확인해보니

▶ jdk버전 일치(필자는 1.6에서 1.8로 변경하였다.)

▶ 이클립스(STS) -ini에 vm설정을 하였는가?

▶ lombok 라이브러리 설치 후 이클립스(STS) 실행 경로에 lombok.jar파일을 추가 하였는가?

lombok설치시 설치할 경로 선택...

▶ pom.xml에서..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- lombok -->
<dependencies>
        
<!-- 생략 -->
        
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.0</version>
        <scope>provided</scope>
    </dependency>
        
<!-- 생략 -->
    
<dependencies>
cs

dependency 설정 해주었는가?

...

위의 방법 확인 후 Maven Update해보자.


몇시간 끙끙 앓던 에러가 깔끔하게 해결되었다!!

반응형
반응형

view에서 id를 입력한 후 submit을 누르면 다음페이지에 값이 뜨게 해보자.


우선 따로 컨트롤러를 만들지 않고 HomeController에 메소드만 추가하며 실행.

1. index 매핑

HomeController에서..

1
2
3
4
    @RequestMapping("/index")
    public String goIndex() {
        return "index";
    }
cs

이렇게 매핑해주기.

2. index.jsp

(파일 경로)

views 밑에 index.jsp파일 생성해준다.

index.jsp에는

form태그를 이용해서 text, submit 적어주기.

form의 method가 get방식이므로 controller에서 @RequestMapping될 때 method가 GET인 것으로 찾아간다.

(반대로 post일 경우 POST를 찾아감)


3. submit을 눌렀을 때 연결될 view페이지 생성

views 밑에 student폴더 만들어주고 그 밑에 studentView.jsp 생성

studentView에서는 index.jsp에서 넘겨준 값을 보여주는 역할만 한다.

studentView.jsp에 들어갈 내용..


4. 마지막으로 Controller에서 studentView.jsp 매핑을 해보자

하나하나씩 살펴보면..

1. student로 들어오는 값은 goStudent메서드와 연결시킨다.

2. GET방식으로 값을 받을것.

※ 만약 POST방식으로 값이 전달된다면.. 405에러가 뜬다.

3. HttpServletRequest로 넘어온 id값을 id변수에 저장.

4. model에 id 저장.

5. 클라이언트에게 studentView페이지를 보여줌


실행결과 확인

url을 확인해보면 index에 매핑되어 해당 view페이지가 나타난 것을 알 수 있다.

1234입력후 전송을 누르면..


GET방식으로 id의 값이 나타나고 studentView에서 뿌려진 값이 1234인 것을 알 수 있다.


405에러를 실험해보자.

index.jsp의 form method가 get인데.. 

controller에서 method를 post로 설정해주게 되면

405..ㅎㅎ


view는 건들이지 않고 컨드롤러에서만 GET인지 POST인지 구별하여 실행할 수 있게 작업해보자.

controller에서 


goStudent를 오버로딩 시키는데 

→ 리턴타입을 ModelAndView, 매개변수 Model을 지워버린다.

ModelAndView는 반환값으로 ModelAndView객체를 반환한다.

객체 반환할 때 여러가지 정보를 가지고 가는데..

▶ 뷰의 이름 설정 : mv.setViewName("뷰의 경로");

 데이터를 보낼 때 : mv.addObject("변수 이름", "데이터 값");


위와 같이 해주면 form의 method가 GET인지 POST인지 따로 구분하지 않고 실행할 수 있다.

반응형
반응형

종종 프로젝트 실행 후 

위와 같은 에러가 뜨는 경우가 있다.


이 에러는 포트 충돌로 생기기 때문에 포트만 수정해주면 된다.


↓↓↓수정 방법 ↓↓↓


Tomcat v8.5 Server at localhost 더블 클릭하면 Editor에 설정 창이 나타난다.

HTTP/1.1 Port Number를 8080이 아닌 다른 Number로 설정해주자.

8081로 수정 후 다시 실행시켜보았다.

아무 문제 없이 잘 돌아간다.

반응형

'ETC' 카테고리의 다른 글

절대경로 / 상대경로  (0) 2018.08.17

+ Recent posts