달력

9

« 2020/9 »

  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
2020. 2. 20. 10:15

pom.xml Development/Spring


 

 

pom.xml

·         프로젝트 루트에 위치하고 있는 메이븐의 메인 설정 파일입니다.

·         IDE에서 쉽게 불러오고 수정할 있습니다.

·         Maven 프로젝트를 생성하면 pom.xml 파일이 생성됩니다.

·         pom.xml 파일은 Project Object Model 정보를 담고 있습니다.

·         Maven에서는 의존성 라이브러리를 pom.xml 통해 관리합니다.

 

 


 



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

STS 설치하기  (0) 2020.03.03
JoinPoint 인터페이스의 메소드  (0) 2020.02.26
pom.xml  (0) 2020.02.20
@RequestBody  (0) 2020.02.15
Spring AOP 라이브러리 설치  (0) 2020.02.08
Maven 프로젝트 설정시 필수항목  (0) 2020.01.16
Posted by codedragon codedragon

댓글을 달아 주세요

2020. 2. 15. 10:02

@RequestBody Development/Spring



 

 

@RequestBody

·         HTTP POST 요청에 대해서만 처리합니다.

·         HTTP POST 요청에 대해 request body 있는 request message에서 값을 얻어와 매칭합니다.

·         RequestData 바로 Model이나 클래스로 매핑합니다. 이를테면 JSON 이나 XML같은 데이터를 적절한 messageConverter 읽을 사용하거나 POJO 형태의 데이터 전체로 받는 경우에 사용합니다.

·         HTTP Request Body(요청 몸체) Java Object 전달 받을 있습니다.

 

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

@ResponseBody

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

//...

return true;

}

 

 


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

JoinPoint 인터페이스의 메소드  (0) 2020.02.26
pom.xml  (0) 2020.02.20
@RequestBody  (0) 2020.02.15
Spring AOP 라이브러리 설치  (0) 2020.02.08
Maven 프로젝트 설정시 필수항목  (0) 2020.01.16
Index downloads are disabled, search results may be incomplete. 해결방법  (0) 2020.01.06
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Spring AOP 라이브러리 설치

 

Maven 리포지토리 사이트에 접속

http://mvnrepository.com/

 

"spring aop"으로 검색

spring aop


 

 

 

첫번째 항목 선택

https://mvnrepository.com/search?q=spring+aop


 

 

버전번호 클릭

https://mvnrepository.com/artifact/org.springframework/spring-aop


 

 

 

Maven항목의 dependency 정보 복사

https://mvnrepository.com/artifact/org.springframework/spring-aop/5.1.6.RELEASE


 

 

 

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

pom.xml

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

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-aop</artifactId>

    <version>5.1.6.RELEASE</version>

</dependency>

 

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


 

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Maven 프로젝트 설정시 필수항목

Maven 프로젝트 설정시 필수적으로 지정해야 하는 항목입니다.

 

항목

설명

Group ID

·         Top-level package명으로 사용됩니다.

·         패키지 명명 규칙을 따릅니다.

 

https://codedragon.tistory.com/228

Artifact ID

·         프로젝트명 동일하게 설정합니다.

Version

·         버전을 명시합니다.

 

 

 


 

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

오류 메시지

Index downloads are disabled, search results may be incomplete.


 

 

 

 

해결방법 1

eclipse 메뉴: [Windows] >> [Preferences] >>

[Maven] 선택 >>

[Download repository index updates on startup] 체크 >>

[Download Artifact Sources] 체크 >>

[Download Artifact JavaDoc] 체크 >> [Apply] >> [Apply and Close]


 

eclipse 재시작


 

이클립스가 재시작하면서 Maven 기본 repository 업데이트합니다.


 

 

 

 

 

해결방법 2

eclipse 메뉴: [Window] >> [Show View] >> [Other] >>

[Maven] > [Maven Repositories]


 

 

central(https://repo.maven.apache.org/maven2) 선택한 >> 마우스 우클릭 >> [Update Index]


 


Posted by codedragon codedragon

댓글을 달아 주세요



 

AOP(Aspect Oriented Programming)

·         AOP OOP 더욱 OOP 답게 만들어 있습니다. , OOP 지원해주는 개념입니다.

·         AOP OOP뿐만 아니라 기존의 절차적 프로그래밍에도 적용될 있습니다.

·         AOP 애플리케이션에서의 관심사(관점) 분리(기능의 분리) , 핵심적인 기능에서 부가적인 기능을 분리합니다. 분리한 부가기능을 애스펙트 (Aspect)라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법입니다.

·         OOP 적용하여도 핵심기능에서 부가기능을 분리된 모듈로 작성하기 어려웠던 문제점을 AOP 해결해 준다고 있습니다.

·         AOP 부가기능을 애스펙트(Aspect) 정의하여, 핵심기능에서 부가기능을 분리함으로써 핵심기능을 설계하고 구현할 객체지향적인 가치를 지킬 있도록 도와주는 개념입니다.

 

 

 

 

기존 방식

하나의 Application안에 핵심기능(Primary Concern) 부가기능(Cross-Cutting Concern) 함께 썩여있습니다.


 

 

 

 

AOP 적용 방식

·         비즈니스 로직을 구현한 부분인 핵심기능(Primary Concern) 보안, 인증등 부가기능(Cross-Cutting Concern) 분리할 있습니다.

·         부가기능을 Advice 정의해서 분리하고 핵심기능에 적용하기 위해 Point-Cut 정의합니다. Advice Point-Cut 묶어서 Aspect라고 합니다.

·         Advice Point-Cut 정규표현식에 의거해서 핵심기능에 적용하는 과정을 Weaving이라고 합니다.

 


 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

전자정부 표준 프레임워크 개발 가이드 Manual

http://www.egovframe.go.kr/wiki/doku.php?id=start

 


 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

오류메시지

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class:

4 06, 2019 4:01:58 오전 org.springframework.context.support.AbstractApplicationContext prepareRefresh

정보: Refreshing org.springframework.context.support.

ClassPathXmlApplicationContext@5910e440: startup date [Sat Apr 06 04:01:57 KST 2019]; root of context hierarchy

4 06, 2019 4:01:58 오전 org.springframework.beans.factory.xml.

XmlBeanDefinitionReader loadBeanDefinitions

정보: Loading XML bean definitions from class path resource [appCTXch02ex11.xml]

4 06, 2019 4:01:58 오전 org.springframework.context.annotation.

ClassPathScanningCandidateComponentProvider registerDefaultFilters

정보: JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: 

Failed to read candidate component class: file [C:\CodeLa

b\git_study\study_Spring\SpringMain\target\classes\ch02\ex11\step2\Article.class]; nested exception

 is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - 

probably due to a new Java class file version that isn't supported yet: file [C:\CodeLab\git_study\study_Spring\SpringMain\target\classes\ch02\ex11\step2\Article.class]; nested exception is java.lang.IllegalArgumentException

at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.

findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:290)

at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.

doScan(ClassPathBeanDefinitionScanner.java:242)

at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.

parse(ComponentScanBeanDefinitionParser.java:84)

at org.springframework.beans.factory.xml.NamespaceHandlerSupport

.parse(NamespaceHandlerSupport.java:73)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.

parseCustomElement(BeanDefinitionParserDelegate.java:1438)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.

parseCustomElement(BeanDefinitionParserDelegate.java:1428)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.

parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:185)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.

doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.

registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerB

eanDefinitions(XmlBeanDefinitionReader.java:493)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.

doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.

loadBeanDefinitions(XmlBeanDefinitionReader.java:334)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.

loadBeanDefinitions(XmlBeanDefinitionReader.java:302)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader

.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.

loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.

loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader

.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)

at org.springframework.context.support.AbstractXmlApplicationContext.

loadBeanDefinitions(AbstractXmlApplicationContext.java:127)

at org.springframework.context.support.AbstractXmlApplicationContext.

loadBeanDefinitions(AbstractXmlApplicationContext.java:93)

at org.springframework.context.support.AbstractRefreshableApplicationContext.

refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)

at org.springframework.context.support.AbstractApplicationContext.obtainFr

eshBeanFactory(AbstractApplicationContext.java:537)

at org.springframework.context.support.

AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)

at ch02.ex11.step2.BBSMain.main(BBSMain.java:12)

Caused by: org.springframework.core.NestedIOException: ASM ClassReader 

failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [C:\CodeLab\git_study\study_Spring\SpringMain\target\classes\ch02\ex11\step2\Article.class]; nested exception is java.lang.IllegalArgumentException

at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:56)

at org.springframework.core.type.classreading.

SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)

at org.springframework.core.type.classreading.

CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)

at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.

findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:266)

... 24 more

Caused by: java.lang.IllegalArgumentException

at org.springframework.asm.ClassReader.<init>(Unknown Source)

at org.springframework.asm.ClassReader.<init>(Unknown Source)

at org.springframework.asm.ClassReader.<init>(Unknown Source)

at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:53)

... 27 more

 


 


 

 

 

 

 

해결방법

pom.xml 에서

Spring Framework 버전을 3.x -> 4.x 버전이상으로 업그레이드 하면 해결됩니다.

 

<!-- Spring -->

<spring-framework.version>3.2.3.RELEASE</spring-framework.version>

<!-- Spring -->

<spring-framework.version>5.1.6.RELEASE</spring-framework.version>

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Logback 라이브러리 설치하기

 

Maven Repository 접속

http://mvnrepository.com/

 

 

"logback "으로 검색

logback

https://mvnrepository.com/search?q=logback+

 

 

가장 위에 있는 [Logback Classic Module]항목 선택


 

 

[1.2.3] 버전 링크 클릭

https://mvnrepository.com/artifact/ch.qos.logback/logback-classic


 

 

 

Maven 항목의 depnedency정보 복사

https://mvnrepository.com/artifact/ch.qos.logback/logback-classic/1.2.3


 

 

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

pom.xml

<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->

<dependency>

    <groupId>ch.qos.logback</groupId>

    <artifactId>logback-classic</artifactId>

    <version>1.2.3</version>

    <scope>test</scope>

</dependency>

 

 

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


 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

 

에러 메시지

Failed to instantiate SLF4J LoggerFactory Reported exception:

java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException

 


 

 

 

 

 

해결방법

 

기존 logback 버전을 최신 버전으로 업데이트 해줍니다.

https://codedragon.tistory.com/8916

 

<!-- Logging -->

<logback.version>1.0.13</logback.version>

<logback.version>1.2.3</logback.version>

 

 

 

 

 

https://logback.qos.ch/download.html


 

 


Posted by codedragon codedragon

댓글을 달아 주세요