小编val*_*jon的帖子

如何从Intellij IDEA访问内存中的H2数据库

在Spring Boot项目中,我试图从我的IDE中查看内存中的表。

如何从Intellij IDEA访问内存中的h2数据库。

这是我的application.yml中的片段:

 h2:
    datasource:
        url: jdbc:h2:mem:mydb
        username: username
        password: 123
        driver-class-name: org.h2.Driver
        init-sql: h2.sql
    console:
      enabled: true
      path: /search/console
      settings:
        trace: false
        web-allow-others: false
Run Code Online (Sandbox Code Playgroud)

Intellij没有字段可输入内存数据库的用户名: Intellij没有字段来输入内存数据库的用户名 测试连接显示成功,但是看不到h2.sql中的表。我可以使用h2控制台访问它们。

java intellij-idea h2 spring-boot

6
推荐指数
1
解决办法
2779
查看次数

Spring 测试:为 org.springframework.test.context.jdbc.Sql 配置数据源

在我的 Spring Boot 项目中,我有两个数据源

    @Primary
    @Bean(name = "pgDatasource")
    public BasicDataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(env.getProperty("spring.datasource.dbcp2.driver-class-name"));
        dataSource.setUrl(env.getProperty("spring.datasource.dbcp2.url"));
        dataSource.setUsername(env.getProperty("spring.datasource.dbcp2.username"));
        dataSource.setPassword(env.getProperty("spring.datasource.dbcp2.password"));
        dataSource.setMaxActive(Integer.valueOf(env.getProperty("spring.datasource.dbcp2.max-total")));
        dataSource.setMaxIdle(Integer.valueOf(env.getProperty("spring.datasource.dbcp2.max-idle")));
        dataSource.setInitialSize(Integer.valueOf(env.getProperty("spring.datasource.dbcp2.initial-size")));
        return dataSource;
    }

    @Bean(name = "h2Datasource")
    public BasicDataSource h2DataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(env.getProperty("spring.h2.datasource.driver-class-name"));
        dataSource.setUrl(env.getProperty("spring.h2.datasource.url"));
        dataSource.setUsername(env.getProperty("spring.h2.datasource.username"));
        dataSource.setPassword(env.getProperty("spring.h2.datasource.password"));

        Resource initData = new ClassPathResource("scripts/inmem.sql");
        DatabasePopulator databasePopulator = new ResourceDatabasePopulator(initData);
        DatabasePopulatorUtils.execute(databasePopulator, dataSource);

        return dataSource;
    }
Run Code Online (Sandbox Code Playgroud)

这里 PostgreSQL 的数据源是一个主要的 bean。在我的几个测试中,我想针对 h2 数据库运行一个脚本。为此,我正在尝试使用@Sql注释。但是,如果我使用@Sql,它会针对pgDatasource. 我可以将 h2 配置为这些测试的主 bean,但测试方法的主体取决于pgDatasource主 bean所在的配置。

测试样品 …

java integration-testing mockito spring-boot junit5

5
推荐指数
1
解决办法
1913
查看次数

Spring Security配置中的单角色多个IP地址

在我的Spring Boot项目中,我试图授予具有特定IP地址的多个管理员用户访问权限。

是否可以将一个角色映射到多个IP地址?

这是我的安全配置中的无效代码。(为简单起见,我提供了硬编码的角色名称和IP地址)

@SuppressWarnings("ALL")
@Configuration
@EnableWebSecurity
public class MyWebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        List<String> ipAddresses = new ArrayList<>();
        ipAddresses.add("127.0.0.1");
        ipAddresses.add("192.168.1.0/24");
        ipAddresses.add("0:0:0:0:0:0:0:1");

        for (String ip : ipAddresses) {
            http.authorizeRequests().
                    antMatchers("/admin" + "/**")
                    .access("hasRole('admin') and hasIpAddress('" + ip + "')");
        }
    }

    //some other configurations
}
Run Code Online (Sandbox Code Playgroud)

我的请求的网址:http:// localhost:9595 / admin / checkappeals / 211

java security ip-address spring-security spring-boot

2
推荐指数
2
解决办法
3116
查看次数

Spring 启动测试:在嵌套测试中运行脚本 (@Sql("/script.sql"))

在我的 Spring boot 项目的测试中,我无法在嵌套类中执行 SQL 脚本。

代码

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = SecurityTestConfig.class)
@AutoConfigureMockMvc
@ActiveProfiles({"test", "test-security-profile"})
@TestInstance(Lifecycle.PER_CLASS)
class MyTest{
    //...
    @Test
    @Sql("/permission.sql")
    void temp() {//here script is executed well}

    @Nested
    @DisplayName("Inner test")
    class InnerTest {
       @Test
       @Sql("/permission.sql")
       void temp() {//here @Sql throws exception}

    }

}
Run Code Online (Sandbox Code Playgroud)

异常(运行测试时抛出)

java.lang.IllegalStateException: Failed to execute SQL scripts for test context [DefaultTestContext@406ad6d5 testClass = MyTest.InnerTest, testInstance = uz.oltinolma.producer.security.mvc.permission.MyTest$InnerTest@2a7bc16b, testMethod = temp@MyTest.InnerTest, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@1186374c testClass = MyTest.InnerTest, locations = '{}', classes = '{}', contextInitializerClasses …
Run Code Online (Sandbox Code Playgroud)

java spring integration-testing mockito junit5

2
推荐指数
1
解决办法
3929
查看次数

Spring Boot 2.1 的 Elasticsearch 版本

在我的Spring Boot ( 2.0.5 ) 项目中,我使用的是Elasticsearch ( 5.6.9 )。但是,由于测试环境中的一些错误,我们正在迁移到 Spring boot( 2.1.0 )。当我运行应用程序时,出现以下消息:

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call the method org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder.execute()Lorg/elasticsearch/action/ActionFuture; but it does not exist. Its class, org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder, is available from the following locations:

    jar:file:/C:/Users/User/.m2/repository/org/elasticsearch/elasticsearch/5.6.9/elasticsearch-5.6.9.jar!/org/elasticsearch/action/admin/indices/mapping/put/PutMappingRequestBuilder.class

It was loaded from the following location:

    file:/C:/Users/User/.m2/repository/org/elasticsearch/elasticsearch/5.6.9/elasticsearch-5.6.9.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder


Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)

当前 pom.xml 文件 …

java maven elasticsearch spring-boot

2
推荐指数
1
解决办法
5393
查看次数

如何使用 i18n 中的 Thymeleaf 给按钮标签

目前我正在尝试Savemessage_en.properties文件中的值替换按钮标签中的单词。

<input type="submit" value="Save" class="btn btn-primary btn-block"/>
Run Code Online (Sandbox Code Playgroud)

我试过如下:

<input type="submit" th:text="#{newuser.page.saveBtn}" class="btn btn-primary btn-block"/>
Run Code Online (Sandbox Code Playgroud)

但它没有给出我预期的结果。请帮我解决这个问题。

html java internationalization thymeleaf spring-boot

1
推荐指数
1
解决办法
5159
查看次数