Spring Boot JPA H2 콘솔이 실행되고 있지 않습니다. application.properties 파일이 무시됩니다.
Spring Boot 가이드에서 H2 콘솔을 구할 수 있다고 하는데 작동이 안 됩니다.
http://localhost:8080/h2/ Whiteabel Error Page 이 응용 프로그램에는 /error에 대한 명시적 매핑이 없으므로 이를 폴백으로 보는 것입니다.2016년 10월 26일 수요일 12:31:46 BST 예기치 않은 오류(유형=찾을 수 없음, 상태=404)가 발생했습니다.사용 가능한 메시지 없음
다음을 생성했습니다.application.properties
과 같은 합니다.
spring.h2.console.enabled=true
spring.h2.console.path=/h2
제 프로젝트는 이것을 기반으로 합니다.
경로는 " " 입니다./h2-console
작동하지도 않습니다.
에 추가하여 문제가 해결되는 다른 답을 찾았습니다.Application.java
:
@Bean
public ServletRegistrationBean h2servletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
registration.addUrlMappings("/h2/*");
return registration;
}
내안모에 것.application.properties
파일이 무시됩니다.다음을 추가해 보았습니다.
spring.datasource.url=jdbc:h2:file:~/portal;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
그러나 데이터베이스는 여전히 메모리에만 작성됩니다.
application.properties에서 기본 경로를 설정했는지 확인합니다.
예를 들어, 설정이 있는 경우
server.contextPath=/api
다음에서 h2 콘솔에 액세스합니다.
http://localhost:8080/api/h2-html
당연하죠, 하지만 저는 그게 끝이었어요.
이 문제의 또 다른 가능한 원인은 스프링 보안을 사용하는 경우입니다.이 경우 정의한 h2 콘솔 URL에 특정 권한을 추가할 수 있습니다.예를 들어 기본 h2-console 구성의 경우(가 없는 경우)spring.h2.console.path
속성), WebSecurityConfigurerAdapter 확장 클래스 내에 다음을 추가합니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/h2-console/**").permitAll()
.anyRequest().authenticated();
http.headers().frameOptions().sameOrigin();
}
마지막에 있는 줄도 주의하세요.http.headers().frameOptions().sameOrigin();
콘솔에 로그인할 때 화이트 가능 페이지 오류를 방지하기 위해 필요합니다.이에 대해서도 설명합니다.
위치는 재치위입니다.src\main\java\hello\application.properties
이유가 .두 가지 이유로.
- 의
src\main\java
- 직오의
application.properties
에 또는 적으로근.config
디렉터리 또는 고려됩니다(기본값).(참조 가이드 참조).
해결책은 간단히 이동하는 것입니다.application.properties
src\main\resources
.
제 경우에는, 그냥 태그를 제거해야 했습니다.<scope>runtime</scope>
여기에 설명된 것처럼 h2 의존성으로부터.
a /
앞에 spring.h2.console.path
다음과 같이 보여야 합니다.
spring.h2.console.path=/h2
, 한당신지시때할이또때▁you할을 나타낼 때도 마찬가지입니다.spring.h2.console.path
/h2-console
이상 할 수 .
안부 전해요
저는 마이크로 서비스 프로젝트를 구축하는 동안 h2 콘솔을 사용해 보았는데 "White label error page"라는 같은 문제에 빠졌습니다.현재 프로젝트에 보안을 추가하지 않았지만 application.properties에서 spring.h2.dll.enabled= true를 제거하고 종속성 dev-tools를 추가하면 문제가 해결됩니다.dev-tools를 추가하지 않은 것도 문제의 원인이 되었으므로 이 종속성도 추가해 보십시오.물론, 당신은 h2, 액튜에이터, 웹 의존성을 추가할 것입니다.
application.properties에서 다음을 시도합니다.
spring.h2.console.enabled: true
application.properties에 추가하려고 합니다.
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
//그런 다음 SecurityConfig 클래스를 만듭니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests().antMatchers("/").permitAll().and()
.authorizeRequests().antMatchers("/h2-console/**").permitAll();
httpSecurity.csrf().disable();
httpSecurity.headers().frameOptions().disable();
}
}
저는 Eclipse 4.26.0을 사용하여 동일한 사례를 발견했습니다. 위의 방법 중 일부가 작동하지 않았습니다.한 포럼에서 누군가가 devtools 종속성을 추가하자고 제안했습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
당신에게 효과가 있기를 바랍니다.
https://mvnrepository.com/artifact/com.h2database/h2/1.4.200 에서 부주의하게 복사했기 때문에 scope= 테스트가 문제였습니다.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>test</scope>
</dependency>
그리고 그것을 대체했습니다.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>runtime</scope>
</dependency>
이 후에는 기본 구성에서 작동해야 합니다.
스프링 보안은 사용하지 않지만, 그에 따라 변경해야 할 수도 있습니다.해당 https://stackoverflow.com/a/59729714/7359806 에 대한 위의 답변을 확인하십시오.
첫째, 다음과 같은 종속성이 있는지 확인합니다.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
그런 다음 application.properties에 다음을 추가합니다.
##spring.main.web-application-type=none make sure it's commented
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
##server.port=9999 make sure you use default port (8080). In other words, don't specify a server.port
저는 컴퓨터를 다시 시작해서 고쳤습니다.
원인은 확실하지 않지만 포트가 사용되었거나 h2 관련 파일이 올바르게 배포되지 않았을 수 있습니다.
springBoot 응용 프로그램이 시작될 때 Hibernate 및 H2에 대한 로그 줄이 표시되는지 확인합니다.
2017-04-22 14:41:03.195 INFO 912 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.0.12.Final}
2017-04-22 14:41:03.197 INFO 912 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2017-04-22 14:41:03.199 INFO 912 --- [ main] org.hibernate.cfg.Environment : HHH000021: Bytecode provider name : javassist
2017-04-22 14:41:03.278 INFO 912 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2017-04-22 14:41:03.469 INFO 912 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2017-04-22 14:41:03.935 INFO 912 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export
2017-04-22 14:41:03.945 INFO 912 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete
이 문제에 대해서는 application.properties에 기본 문자열을 추가하면 됩니다.
spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
아마도 봄 부츠는 어떤 이유로 이것을 설정하지 않을 것입니다.
제거한다.<scope>test</scope>
부터h2 dependency
에pom.xml
제 경우에는 효과가 있습니다.수정 후 다시 설치하고 다시 빌드하는 것을 잊지 마십시오.
<!-- H2 database -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
<!-- <scope>test</scope> -->
</dependency>
나는 Gradle 선언에서 compile을 사용하지 않고 testCompile을 사용했고 나를 위해 잘 작동했습니다.
예:
compile group: 'com.h2database', name: 'h2', version: '1.4.200'
application.properties를 무시하는 프로그램에 문제가 있고 Eclipse를 사용 중인 경우 다음을 수행합니다.
application.properties를 src/main/resources 폴더로 이동하고 마우스 오른쪽 단추를 클릭한 후 "빌드 경로" -> "빌드 경로에 추가"를 클릭합니다.
반드시 >를 사용하십시오.spring.datasource.url=jdbc:h2:mem:testdb
이 DB는 h2에 필요하기 때문에
언급URL : https://stackoverflow.com/questions/40261302/spring-boot-jpa-h2-console-not-running-application-properties-file-ignored
'programing' 카테고리의 다른 글
PowerShell을 사용하여 원본 서버의 동일한 디렉터리 구조에 있는 폴더 및 하위 폴더의 복사 항목 파일 (0) | 2023.08.09 |
---|---|
Oracle의 단순 재귀 쿼리 (0) | 2023.08.09 |
모든 Python 클래스가 개체를 확장해야 합니까? (0) | 2023.08.09 |
각도 2에서 관측 가능한 데이터를 가져오는 방법 (0) | 2023.08.09 |
PL/SQL의 null 연관 배열에 대한 이 검사가 실패하는 이유는 무엇입니까? (0) | 2023.08.09 |