바보, 삽질을 하다.
redirectUrl 는 반드시 /
으로 시작해야 한다. 안그러면… 접근한 requestUrl 에 끊없이 redirectUrl 붙다가 오류가 난다.
바보, 삽질을 하다.
redirectUrl 는 반드시 /
으로 시작해야 한다. 안그러면… 접근한 requestUrl 에 끊없이 redirectUrl 붙다가 오류가 난다.
2016/11/08 에 Spring Boot 1.4.2 Available Now 가 출시되었다.over 100 fixes, improvements and 3rd party dependency updates 100 여개의 결함을 수정하고 구현하고, 서드파티에 대한 의존성 업데이트가 있었다고 한다.
그와 관련된 변화 중 하나가 spring-boot
라는 플러그인 아이디가org.springframework.boot
로 변경되었다.
이와 관련된 정보는 프로젝트 빌드를 실행해보면,
...
The plugin id 'spring-boot' is deprecated. Please use 'org.springframework.boot' instead.
...
와 같은 메시지가 출력되는 것을 확인했다. 이에 대한 정보를 찾아보았다. 이에 대해서 정보를 찾아보던 중에
64. Spring Boot Gradle plugin 페이지에서 힌트를 발견했다.
buildscript {
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.2.RELEASE")
}
}
apply plugin: 'org.springframework.boot'
와 같은 형태로 되어 있는 것을 확인했다. 내가 사용하고 있는 build.gradle
에는 다음과 같이 선언되어 있다.
buildscript {
ext {
springBootVersion = '1.4.2.RELEASE'
}
repositories {
jcenter()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'spring-boot'
apply plugin: 'spring-boot' 만 apply plugin: 'org.springframework.boot' 으로 변경하면 된다. |
buildscript {
ext {
springBootVersion = '1.4.2.RELEASE'
}
repositories {
jcenter()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'org.springframework.boot'
잘 찾았길 바란다. |
org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags: [entity.list_collection_a, entity.list_collection_b]
해당필드는 enum 타입의 목록을 가지는 필드였고, 프로젝트의 의존성 라이브러리 버전들을 업그레이드 하면서org.hibernate.loader.MultipleBagFetchException
이 발생했다.
업그레이드
org.hibernate:hibernate-entitymanager:5.1.0.Final
→org.hibernate:hibernate-entitymanager:5.2.4.Final
이 문제를 해결하는 방법은 enum 타입 컬렉션 필드에 정의를 다음과 같이 변경했다.
@ElementCollection
는 기본적으로 LAZY
값을 가진다. 그러나 한단에 선언된@LazyCollection(LazyCollectionOption.FALSE)
을 통해서 EAGER
로 처리된다.@LazyCollection
는 컬렉션 타입에 대한 LAZY
여부를 결정하는 기능을 한다.
Thymeleaf 에서 스프링 환경변수 사용하기 (0) | 2016.12.07 |
---|---|
[web] HttpServletResponse.sendRedirect 호출시 주의사항 (0) | 2016.11.23 |
[spring] 어제의 삽질, ViewController 설정 때문에... (2) | 2016.09.13 |
untitled Preview java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed (0) | 2016.09.11 |
20160806 Spring MVC 에서 엑셀다운로드 기능 구현하기 (0) | 2016.08.06 |
스프링부트 기본 에러페이지는 ‘whitelabel’ error page 이다. 이와 관련된 내용은 ErrorMvcAutoConfiguration 을 살펴보면 찾아볼 수 있다.
private final SpelView defaultErrorView = new SpelView("<html><body><h1>Whitelabel Error Page</h1>"+ "<p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p>"+ "<div id='created'>${timestamp}</div>"+ "<div>There was an unexpected error (type=${error}, status=${status}).</div>"+ "<div>${message}</div></body></html>");
이 기본적인 화이트레이블 페이지 대신에 사용자가 지정한 에러페이지로 변경이 가능하다. 이를 위해서는
server.error.include-stacktrace=never # When to include a "stacktrace" attribute.server.error.path=/error # Path of the error controller.server.error.whitelabel.enabled=true # Enable the default error page displayed in browsers in case of a server error.
위 세가지 속성에 대한 조작을 해야 한다. 우선 사용자지정 에러페이지를 사용하기 위해서는 화이트레이블 출력을 비활성화해야 한다.
server.error.whitelabel.enabled=false
로 변경한다. 그리고 에러페이지에서 발생한 에러의 스택트레이스를 출력하기 위해서는 server.error.include-stacktrace
을 never
이외의 것으로 변경해야 한다.
server.error.include-stacktrace=always or on_trace_param
이와 관련된 값은 ErrorProperties
를 살펴보면 된다.
사용가능한 속성들을 템플릿(Thymeleaf) 에 적용해본 예다.
StatusHouston, we have a problem([[${error}]])Error MessageReturn homeTime StampException nameTrace
npm 호출시 다음과 같은 에러가 발생했다.
Error: Cannot find module 'npmlog'at Function.Module._resolveFilename (module.js:455:15)at Function.Module._load (module.js:403:25)at Module.require (module.js:483:17)at require (internal/module.js:20:19)at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:13at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:75:3)at Module._compile (module.js:556:32)at Object.Module._extensions..js (module.js:565:10)at Module.load (module.js:473:32)at tryModuleLoad (module.js:432:12)
npm 의 문제가 있으니 이를 수정한 업그레이드가 있을까하고 업그레이드를 시도했으니 npm 6.6.0 가 이미 설치되어 있다고 한다.
✗ brew upgrade npm==> Auto-updated Homebrew!Updated 1 tap (homebrew/core).==> Updated Formulaebacula-fd erlang galen irssi leiningen liquibase macosvpn open-babel openssl ✔ openssl@1.1 privoxy repo zpaqError: npm 6.6.0 already installed
그래도 동일한 문제가 발생했다. 이와 관련해서 인터넷 검색을 문제를 찾아보니 Cannot find module 'npmlog' following homebrew update & upgrade가 나왔다.
위에 나온 절차에 따라 node 삭제작업을 진행한다.
brew uninstall nodeUninstalling /usr/local/Cellar/node/6.6.0... (3,669 files, 40.9M)node 6.1.0, 6.3.1 are still installed.Remove all versions with `brew uninstall --force node`.➜ honeymon git:(master) ✗ brew uninstall --force nodeUninstalling node... (7,484 files, 78.5M)➜ honeymon git:(master) ✗ sudo rm -rf /usr/local/lib/node_modulesPassword:➜ honeymon git:(master) ✗ brew install node==> Downloading https://homebrew.bintray.com/bottles/node-6.6.0.el_capitan.bottle.tar.gzAlready downloaded: /Users/honeymon/Library/Caches/Homebrew/node-6.6.0.el_capitan.bottle.tar.gz==> Pouring node-6.6.0.el_capitan.bottle.tar.gz==> Using the sandbox==> CaveatsPlease note by default only English locale support is provided. If you needfull locale support you should either rebuild with full icu:`brew reinstall node --with-full-icu`or add full icu data at runtime following:https://github.com/nodejs/node/wiki/Intl#using-and-customizing-the-small-icu-buildBash completion has been installed to:/usr/local/etc/bash_completion.d==> Summary🍺 /usr/local/Cellar/node/6.6.0: 3,669 files, 40.9M
[javascript] gulpjs 를 이용한 프론트엔드 프로젝트 빌드 기본구성 (0) | 2016.08.29 |
---|