55490


Spring bootのサンプルを自分の環境で実行しようとしたらエラーで出来ない状態です。

このページの通りにコピペしました。

<https://qiita.com/rubytomato@github/items/e4fda26faddbcfd84d16>

**環境**

  * VSCode 1.34.0
  * MariaDB 10.3(x64)
  * Java 1.8.0
  * Spring-boot 2.0.4

* * *

出ているエラーは次の通りです。  
**1,`Prefecture.java` にて `ToStringBuilder.reflectionToString`が認識されない**

`reflectionToString` が

> The method reflectionToString(Prefecture, ToStringStyle) is undefined for
> the type ToStringBuilderJava(67108964)

となってしまいます。

**2,`ActorController.java`でエラー**

`actorRepository` の `delete()` や `findOne()` が使えません。

> void org.springframework.data.repository.CrudRepository.delete(Actor arg0)  
>  The method delete(Actor) in the type CrudRepository is not applicable for
> the arguments (Integer)Java(67108979)
>
> The method findOne(Example) in the type QueryByExampleExecutor is not
> applicable for the arguments (Integer)Java(67108979)

また、

[code]

    private Actor<Prefecture> convert(ActorForm form) {
    
[/code]

で `Actor` が

> com.example.actor.repository.Actor  
>  The type Actor is not generic; it cannot be parameterized with arguments
> Java(16777740)

になります。

* * *

一応 pom.xml です

[code]

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.0.M3</version>
            <relativePath/>
            <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>demo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-validation</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web-services</artifactId>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.9</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.1</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.mariadb.jdbc</groupId>
                <artifactId>mariadb-java-client</artifactId>
                <version>2.1.2</version>
            </dependency>
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <name>Spring Snapshots</name>
                <url>https://repo.spring.io/snapshot</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-snapshots</id>
                <name>Spring Snapshots</name>
                <url>https://repo.spring.io/snapshot</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
            <pluginRepository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
            </pluginRepository>
        </pluginRepositories>
    
    </project>
    
[/code]

application.yml(.properties みたいなもの)

[code]

    server:
        port: 9000
    
    spring:
        thymeleaf:
            enabled: true
            cache: false
    
        datasource:
            driverClassName: org.mariadb.jdbc.Driver
            url: jdbc:mariadb://localhost/sample_db_spring
            username: ユーザー名
            password: ****
    
        jpa:
            hibernate:
                show-sql: true
                ddl-auto: update
            database-platform: org.hibernate.dialect.MySQLDialect
    
        messages:
            basename: messages
            cache-seconds: -1
            encoding: UTF-8
    
    endpoints:
        enabled: true
    
[/code]

repository.java

[code]

    package com.example.demo.repository;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    import org.apache.commons.lang3.builder.ToStringStyle;
    import org.junit.platform.commons.util.ToStringBuilder;
    
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    
    @Entity
    @Table(name = "prefecture")
    @Getter
    @Setter
    @ToString
    public class Prefecture {
    
        @Id
        @Column(name="id")
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Integer id;
        @Column(name="name", nullable=false)
        private String name;
    
        // @Override
        // public String toString() {
        //     return ToStringBuilder.reflectionToString(this);
        // }
    }
    
[/code]


CC BY-SA 4.0
2019-06-01T11:47:16.817
55440
2019-06-03T14:13:04.947
2019-06-03T11:46:18.850
15607
15607
question
java spring spring-boot
Spring-bootでサンプル通りに作ったがToStringBuilderなどでエラーが発生する


2については解決しているようなので、１について回答します。1のエラーの原因は、

[code]

    import org.apache.commons.lang3.builder.ToStringBuilder;
    
[/code]

とすべき行で、

[code]

    import org.junit.platform.commons.util.ToStringBuilder;
    
[/code]

としているからです。つまり、Apache Commons
Langの[`ToStringBuilder`](https://commons.apache.org/proper/commons-
lang/apidocs/org/apache/commons/lang3/builder/ToStringBuilder.html)には、`reflectionToString()`というメソッドがありますが、JUnitの[`ToStringBuilder`](https://junit.org/junit5/docs/5.1.1/api/org/junit/platform/commons/util/ToStringBuilder.html)には、`reflectionToString()`というメソッドが無いからです。

> そういえばあまり気にしていませんでしたがapplication.ymlのendpointsも何故か認識されません

これはSpring Boot Actuatorを導入（Mavenの依存関係に追加）していないからですよね。pom.xmlに以下を追加してみて下さい。

[code]

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-actuator</artifactId>
        </dependency>
    
[/code]


CC BY-SA 4.0
2019-06-03T14:00:13.703
55490
2019-06-03T14:13:04.947
2019-06-03T14:13:04.947
21092
21092
55440
answer