Spring Boot部分替换自动配置

时间:2015-06-05 12:32:46

标签: spring spring-boot spring-data spring-restcontroller

我一直在探索Spring Boot(1.2.4)来创建一个简单的RESTful存储库,使用H2&杰克逊。

与其他人一样,我注意到,默认情况下,@ Id字段不在返回的Json中(如此问题所述:While using Spring Data Rest after migrating an app to Spring Boot, I have observed that entity properties with @Id are no longer marshalled to JSON)。

所以我想调整配置以包含它们。

但是我无法全部工作。

基本实体类:

@Entity
public class Thing {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id; //I want this to appear in the RESTful JSON

    private String someInformation;

    protected Thing(){};

    public String getSomeInformation() { return someInformation; }

    public void setSomeInformation(String someInformation) { this.someInformation = someInformation; }

}

基本存储库界面:

public interface ThingRepository extends PagingAndSortingRepository<Thing, Long> {    
    List<Thing> findBySomeInformation(@Param("SomeInformation") String someInformation);
}

简单的启动应用程序:

@ComponentScan
@EnableAutoConfiguration
public class Application {    
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }    
}

我的配置类:

@Configuration
public class RepositoryRestMvcConfig extends SpringBootRepositoryRestMvcConfiguration {     
    @Override
    protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.exposeIdsFor(Thing.class);
    }        
}

我可以看一下使用--debug运行Spring Boot(如http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html所述)我的配置已找到,但似乎没有任何效果。

1 个答案:

答案 0 :(得分:0)

杰克逊在一个类而不是成员变量本身上使用getter / setter。因此,为了确保id在JSON中,只需为它添加一个getter:

email