달력

12

« 2019/12 »

  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  



 

 

 

에러 메시지

GetMapping cannot be resolved to a type

RequestParam cannot be resolved to a type


 

 

 

 

 

 

 

 

해결방법

Controller관련 어노테이션(Annotation), Parameter 처리 어노테이션에서 발생하는 에러를 해결할 있습니다.

 

 

 

pox.xml 의존성 추가

pox.xml Spring 라이브러리가 추가되어져 있는지 확인한 추가하면 해결됩니다.

 

<dependencies>

 

      <!-- Spring 프레임워크 설치 -->

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>5.0.13.RELEASE</version>

</dependency>

<!-- Spring MVC 라이브러리 -->

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-webmvc</artifactId>

    <version>5.1.6.RELEASE</version>

</dependency>

</dependencies>

 

 

 

 

 

 

Mave Project Update

프로젝트 선택 >> 마우스 우클릭 >> [Mave] >> [Update Project…]

 

 

 

 

 

 

해결완료!!!


 



 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

Static Web Resource 처리

·         Server 처리가 필요 없는 static web resource 요청시 Server 거치지 않고 곧바로 응답이 필요한 곳에 사용합니다.

·         특정 URL 요청이 오면 static resource 인식하고 바로 응답을 수행합니다.

·         <mvc:resources>태그로 구현합니다.

 

 

 

servlet-context.xml

 <mvc:resources location="/WEB-INF/resources/" mapping="/resources/**"></mvc:resources>

 

 

location="/WEB-INF/resources/"

실제 응답할 파일이 있는 위치를 지정합니다.

mapping="/resources/**"

HTTP 요청 URL 지정합니다.

**

** /resources/안의 모든 내용을 의미합니다.

 

 

 

요청 URL -> 응답 URL

dispatcherServlet Front에서 요청을 받으면 처리할 Controller 넘기지 않고(Server 가지 않고)

해당 요청을 static resource 인식하여 요청시 바로 응답 URL 처리되게 됩니다.

요청 URL

http://localhost:8080/SpringBBS/resources/scripts/jQuery.js

응답 URL

/WEB-INF/resources/scripts/jQuery.js

 

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

"Spring Explorer" 오픈 하기

Spring Explorer뷰는 "Spring" 모드에 기본적으로 추가되어져 있습니다.

우측에 [Spring Explorer] 아이콘을 클릭하면 창이 오픈됩니다.


 

 


Posted by codedragon codedragon

댓글을 달아 주세요

2019. 7. 7. 01:30

@PathVariable Development/Spring



 

 

@PathVariable

·         @PathVariable 어노테이션을 이용하면 경로(path) 변수를 넣어주면 해당 변수를 요청메소드의 파라미터로 이용 있습니다.

·         HTTP 요청에 대한 요청 URL 파라미터(경로변수;구분자)형태로 사용할 있습니다.

·         요청시 마다 변하는 부분을 경로 변수로 처리할 있습니다.

·         REST API에서 값을 호출할 uri에서 구분자에 들어오는 값을 처리해야 주로 많이 사용합니다.

 

 

요청 URL

/bbs/{경로변수}

파라미터 처리

@PostMapping("/bbs/{경로변수}")

@PathVariable("경로변수") int 매개변수

 

@PostMapping("/bbs/{경로변수}")

@PathVariable int 매개변수(경로변수명과 동일)

 

 

 

// 경로에 변수를 넣어서 요청 처리

// 해당 변수는 요청 메소드의 파라미터로 이용되어 집니다.

@RequestMapping("/student/{studentId}")

public String getStudent(@PathVariable String studentId, Model model) {

// @PathVariable 어노테이션을 통해 경에 설정한 변수를 요청메소드의 파라미터로 사용하고 있습니다.

model.addAttribute("studentId", studentId);

return "student/studentView";

}

@RequestMapping("/student/{studentId}")

// 경로변수명의 값을 저장할 변수명이 경로변수명과 다를 경우 @PathVariable 경로 변수경을 꼭어준 원하는 변수명을 사용해 주면 됩니다.습니다.

public String getStudent(@PathVariable("index") String studentNumberId, Model model) {

 

model.addAttribute("studentId", studentNumberId);

return "student/studentView";

}

 

 

 

 

 

 

요청 URL

http://localhost:8080/bbs/13

파라미터 처리

@PostMapping("/bbs/{index}")

@PathVariable("index") int articleId

 

POST방식의 /bbs/{index} 같이 uri 요청이 들어오면  /bbs/13 URL 경로에서 경로변수에 해당하는 (13) 가져와서 articleId 매개변수에 저장하여 사용합니다.

@PostMapping("/bbs/{index}")

@ResponseBody

public boolean deletePost(@PathVariable("index") int articleId) {

//...

return true;

}

 

 

 

@Controller

@RequestMapping("/bbs")

public class BbsController{

@Autowired

private BbsService bbsService;

 

@RequestMapping(value = "/{index}", method = RequestMethod.POST)

public boolean deletePost(@PathVariable("index") int articleId) {

        //...

        return true;

}

}

 

 

 

 


'Development > Spring' 카테고리의 다른 글

Static Web Resource 처리  (0) 2019.08.09
"Spring Explorer" 뷰 오픈 하기  (0) 2019.07.27
@PathVariable  (0) 2019.07.07
STS4에서 Spring Legacy Project 생성하기  (0) 2019.06.15
eclipse/STS - Spring 환경구성  (0) 2019.06.06
Jackson Library 검색 및 설치  (0) 2019.05.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

STS4에서 Spring Legacy Project 생성하기

 

·         기존 메뉴 항목 확인하기

·         Eclipse Marketplace 실행

·         STS3 Add-On 설치

·         "Spring Legacy Project" 메뉴 확인하기

 

 

 

 

 

기존 메뉴 항목 확인하기

"Spring Legacy Project" STS3까지만 제공되면 STS4부터는 Spring Boot 기본이여서 빠져 있습니다.

 

eclipse 메뉴: [File] >> [New] >> [Project…]


 

 

"Spring" 항목이 없습니다.


 

 

 

 

 

Eclipse Marketplace 실행

 

eclipse 메뉴: [Help] >> [Eclipse Marketplace…]


 

 

 

 

 

 

STS3 Add-On 설치

STS 검색 >>

[Spring Tools 3 Add-On(aka Sprint Tool Suite 3)] 항목의 [Install] 버튼을 클릭합니다.

 


 


 

 

[Confirm]


 


 

 

[I accept the terms of the license agreements] 체크 >>

[Finish]


 

 

설치 ...


 

 

[Restart Now]


 


 

 

 

 

 

 

"Spring Legacy Project" 메뉴 확인하기

eclipse 재시작하면 STS3 Dashboard탭이 오픈됩니다.


 

 

 

"Spring Legacy Project" 메뉴가 다시 보입니다.

 

eclipse 메뉴: [File] >> [New] >> [Project…] >>

[Spring] > [Spring Legacy Project] 선택 >> [Next]

 


 

 

STS3에서 프로젝트 생성과 동일합니다.


 



'Development > Spring' 카테고리의 다른 글

"Spring Explorer" 뷰 오픈 하기  (0) 2019.07.27
@PathVariable  (0) 2019.07.07
STS4에서 Spring Legacy Project 생성하기  (0) 2019.06.15
eclipse/STS - Spring 환경구성  (0) 2019.06.06
Jackson Library 검색 및 설치  (0) 2019.05.18
MyBatis3의 주요 컴포넌트 역할  (0) 2019.05.09
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

eclipse/STS - Spring 환경구성

 

우측 상단의 [Open Perspective] 아이콘 클릭 >> [Spring] 선택 >> [Open]


 

 

 

 

프로젝트 구조도 Spring 환경으로 변경되어집니다.


 


'Development > Spring' 카테고리의 다른 글

@PathVariable  (0) 2019.07.07
STS4에서 Spring Legacy Project 생성하기  (0) 2019.06.15
eclipse/STS - Spring 환경구성  (0) 2019.06.06
Jackson Library 검색 및 설치  (0) 2019.05.18
MyBatis3의 주요 컴포넌트 역할  (0) 2019.05.09
AOP 용어  (0) 2019.04.30
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

Jackson Library 검색 설치

 

http://mvnrepository.com/

 

"jackson mapper"으로 검색

jackson

https://mvnrepository.com/search?q=jackson

 

 

 

첫번째 항목 [Jackson Databind] 선택


 

 

버전번호 클릭

https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind


 

 

 

Maven항목의 dependency 정보 복사

https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.9.8


 

 

 

pom.xml 파일의 <dependencies> 태그안에 붙여넣기 하여 추가합니다.

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->

<dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.9.8</version>

</dependency>

 

 

 

Project Explorer [Maven Dependencies]항목을 펼치면 JUnit라이브러리가 추가된 것을 확인할 있습니다.


 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

MyBatis3 주요 컴포넌트 역할

 

컴포넌트

설명

MyBatis Config File

·         MyBatis 설정파일

·         데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정합니다.

·         mybatis-config.xml, SqlMapConfig.xml

SqlSession FactoryBuilder

·         MyBatis 설정 파일을 바탕으로 SqlSessionFactory 생성합니다.

SqlSessionFactory

·         SqlSession 생성합니다.

SqlSession

·         핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행합니다.

·         SqlSession 오브젝트는 Thread-Safe 하지 않으므로 thread마다 필요에 따라 생성됩니다.

mapping File

·         매핑 파일 Mapper file

·         SQL문과 OR Mapping 설정합니다.

·         user.xml

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요

2019. 4. 30. 00:30

AOP 용어 Development/Spring


 

 

AOP 용어

용어

설명

타겟

(Target)

·         핵심기능을 담고 있는 모듈

·         타겟은 부가기능을 부여할 대상 됩니다.

어드바이스

(Advice)

·         어드바이스는 타겟에 제공할 부가기능을 담고 있는 모듈입니다.

·         Aspect 기능 자체

조인 포인트

(Join Point)

·         어드바이스가 적용될 있는 위치 말합니다.

·         Advice 적용해야 되는 부분(필드, 메소드) 의미합니다. 스프링에서는 메소드만 공통기능을 할당할 있습니다.

·         , 타겟 객체가 구현한 인터페이스의 모든 메서드는 조인 포인트가 됩니다.

 

포인트

(Pointcut)

·         Joint Point 부분으로 실제로 Advice 적용된 부분입니다.

·         어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식(Regular expression)입니다.

·         포인트컷 표현식은 execution으로 시작하고, 메서드의 Signature 비교하는 방법을 주로 이용합니다.

 

애스펙트

(Aspect)

·         애스펙트는 AOP 기본 모듈입니다.

·         공통 기능 = 부가 기능

·         Aspect = Advice  + PointCut

·         애스펙트는 싱글톤 형태의 객체로 존재합니다.

어드바이저

(Advisor)

·         어드바이저 = 어드바이스 + 포인트컷

·         어드바이저는 Spring AOP에서만 사용되는 특별한 용어입니다. AdvisorAspect 동일합니다. 애스펙트라는 용어를 주로 사용합니다.

위빙

(Weaving)

·         위빙은 포인트컷에 의해서 결정된 타겟의 조인 포인트에 부가기능(Advice) 삽입하는 과정 뜻합니다.

·         Advice 핵심기능에 적용하는 행위입니다.

·         위빙은 AOP 핵심기능(타겟) 코드에 영향을 주지 않으면서 필요한 부가기능(어드바이스) 추가할 있도록 해주는 핵심적인 처리과정입니다.

 


 


Posted by codedragon codedragon

댓글을 달아 주세요


 

오류메시지

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'bbsService' available

 


 

<context:component-scan> 태그 통해 스캔하는 경우 getBean() 인자를 변경하여 호출해 주어야 합니다.

 

 

 

 

 

해결방법

Spring 설정 XML 등록한 BeanID Bean 클래스 타입을 인자로 하는 getBean()함수를

Bean 클래스 타입만 인자로 받는 함수로 변경해서 Lookup 합니다.

HelloService bbsService = ctx.getBean("helloService", HelloService.class);

HelloService bbsService = ctx.getBean(HelloService.class);

 

 



Posted by codedragon codedragon

댓글을 달아 주세요