[SPRING] 리소스의 엔티티 링크를 포함하지 않는 Spring 데이터 REST
SPRING리소스의 엔티티 링크를 포함하지 않는 Spring 데이터 REST
Spring 4.2.0에서 알려진 버그 인 것처럼 보입니다. 4.2.1로 업그레이드하면 예상 된 기능이 제공됩니다.
내 개발자 팀을 Spring + WebMVC + Data-REST + Data-JPA + Spring HATEOAS 웹 응용 프로그램으로 이동하려고합니다. 현재 사용중인 응용 프로그램은 계속 진행중인 응용 프로그램의 목록을 유지하려고합니다.
내 기본 Spring Data REST 설정에 문제가있다. 내 리소스는 컬렉션 뷰에 포함되어 있지만 자신의 특정 뷰에는 링크 된 리소스를 포함하지 않습니다.
이것이 의도 된 행동인지 아닌지 잘 모르겠습니다. 그래서이 게시물의 끝에 관련 설정 등을 포함 할 것입니다.
jv.local은 내 개발자 상자입니다. apps-list / app는 spring-data-rest가 바인딩 된 곳입니다 (아래 설정 포함).
예:
curl jv.local:8080/apps-list/app/departments
보고:
{
"_links" : {
"self" : {
"href" : "http://jv.local:8080/apps-list/app/departments{?page,size,sort}",
"templated" : true
}
},
"_embedded" : {
"departments" : [ {
"name" : "Dining",
"_links" : {
"self" : {
"href" : "http://jv.local:8080/apps-list/app/departments/1",
"templated" : false
},
"institution" : {
"href" : "http://jv.local:8080/apps-list/app/departments/1/institution",
"templated" : false
}
}
}, {
"name" : "Housing",
"_links" : {
"self" : {
"href" : "http://jv.local:8080/apps-list/app/departments/2",
"templated" : false
},
"institution" : {
"href" : "http://jv.local:8080/apps-list/app/departments/2/institution",
"templated" : false
}
}
} ]
}
}
(특히 부서는 기관이 _ 링크에 제대로 링크되어 있습니다.)
그러나 특정 부서를 가져 오면
curl jv.local:8080/apps-list/app/departments/1
{
"name" : "Dining",
"_links" : {
"self" : {
"href" : "http://jv.local:8080/apps-list/app/departments/1",
"templated" : false
}
}
}
여기에는 해당 기관이 나열되어 있지 않습니다. _links에서 교육 기관을 사용할 수있는 방법이 있습니까?
Department.java
@Entity
@Table(name="department")
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="name")
private String name;
@ManyToOne(optional = false)
@JoinColumn(name="institution", referencedColumnName="id")
@RestResource
private Institution institution;
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
. . . more getters/setters like above
}
Institution.java
@Entity
@Table(name = "institution")
public class Institution {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name", unique = true)
private String name;
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
. . . name getter/setter
}
DepartmentRepository.java
@RestResource(rel="departments",path="departments")
public interface DepartmentRepository extends JpaRepository<Department, Long> {
}
InstitutionRepository.java
@RestResource(rel="institutions",path="institutions")
public interface InstitutionRepository extends JpaRepository<Institution, Long> {
Institution findFirstByName(String name);
}
구성은 @Imports를 통해 루트 AppConfig 클래스에 포함됩니다. AppConfig는 getRootConfigClasses ()의 멤버로서 AbstractAnnotationConfigDispatcherServletInitializer 서브 클래스를 통해 지정됩니다.
AppConfig 클래스는 다음과 같이 주석 처리됩니다
@Configuration
@ComponentScan({my.packages, my.other.packages})
@EnableSpringDataWebSupport
@EnableTransactionManagement
@EnableJpaRepositories(my.repository.location)
@EnableWebMvc
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Import({PersistenceConfiguration.class, RestConfiguration.class, MvcConfiguration.class, SecurityConfiguration.class})
RestConfiguration.java
@Configuration
public class RestConfiguration extends RepositoryRestMvcConfiguration {
@Override
public RepositoryRestConfiguration config() {
RepositoryRestConfiguration config = super.config();
config.setBasePath("/app");
return config;
}
}
부디! 더 유용한 정보를 제공 할 수 있는지, 아니면 실제로 GH 프로젝트를 제공 할 수 있는지 알려주십시오. 이것이 의도 된 동작이라면 오버 라이딩 할 수있는 방법이 있습니까? 링크를 강제로 표시 하시겠습니까?
시간 내 줘서 고마워!
해결법
-
==============================
1.Spring 4.2에서 이미 잘 알려진 - 고맙게도 이미 수정 된 버그입니다. Spring 4.2.1로 업그레이드하면 (또는 Spring Boot 1.3 M5)이를 수정해야한다.
Spring 4.2에서 이미 잘 알려진 - 고맙게도 이미 수정 된 버그입니다. Spring 4.2.1로 업그레이드하면 (또는 Spring Boot 1.3 M5)이를 수정해야한다.
from https://stackoverflow.com/questions/32386478/spring-data-rest-not-including-entity-links-in-resource by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 리스트와 체크 박스를 사용한 Spring MVC 데이터 바인딩 (0) | 2019.05.25 |
---|---|
[SPRING] 봄 mvc와 tess4j (0) | 2019.05.25 |
[SPRING] Springboot TomcatEmbeddedServletContainer KeepAliveTimeout이 작동하지 않습니다. (0) | 2019.05.25 |
[SPRING] Java 8로 WebSphere에서 애플리케이션을 실행할 때 봄 예외 (0) | 2019.05.25 |
[SPRING] 스프링 주석을 사용하여 맵에 값 삽입 (0) | 2019.05.25 |