programing

Spring Boot JPA H2 콘솔이 실행되고 있지 않습니다. application.properties 파일이 무시됩니다.

muds 2023. 8. 9. 21:07
반응형

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\h‌​ello\application.pro‌​perties이유가 .두 가지 이유로.

  1. src\main\java
  2. 직오의application.properties에 또는 적으로근.config디렉터리 또는 고려됩니다(기본값).(참조 가이드 참조).

해결책은 간단히 이동하는 것입니다.application.propertiessrc\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 dependencypom.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

반응형