我正在使用Spring Boot实现Rest API.由于我的实体类来自另一个包的包,我必须使用注释指定它EntityScan
.此外,我曾经EnableJpaRepositories
指定了定义JPA存储库的包.这是我的项目的样子:
//Application.java
@Configuration
@EnableAutoConfiguration
@ComponentScan
@EntityScan("org.mdacc.rists.cghub.model")
@EnableJpaRepositories("org.mdacc.rists.cghub.ws.repository")
Run Code Online (Sandbox Code Playgroud)
在我的控制器类中,我有一个自动装配的SeqService对象.
//SeqController.java
@Autowired private SeqService seqService;
@RequestMapping(value = "/api/seqs", method = GET, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<List<SeqTb>> getSeqs() {
List<SeqTb> seqs = seqService.findAll();
return new ResponseEntity<List<SeqTb>>(seqs, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
SeqService
是一个接口,我从中创建了一个Bean类SeqServiceBean
.在SeqServiceBean
I中自动安装了JPA存储库:
// SeqServiceBean.java
@Autowired private SeqRepository seqRepository;
@Override
public List<SeqTb> findAll() {
List<SeqTb> seqs = seqRepository.findAll();
return seqs;
}
//SeqRepository.java
@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {
@Override
public List<SeqTb> findAll();
public SeqTb …
Run Code Online (Sandbox Code Playgroud) zookeeper与spring cloud配置服务器有什么区别?它们都将配置存储在服务器中并使其可供客户端使用.
应该何时使用另一个?
计划在基于Spring网络的应用程序中实现静态数据的缓存机制,任何人都可以解释哪个是最好的以及它是如何工作的?
我使用Spring Framework Scheduled
来安排我的工作使用cron每5分钟运行一次.但有时我的工作无限期地等待外部资源,我不能把超时放在那里.我不能fixedDelay
像以前的过程一样进入等待无限模式,我必须每隔5分钟刷新一次数据.
所以我在Spring框架中寻找任何一个选项来在它成功运行Scheduled
之后停止该进程/线程fixed-time
.
我发现下面的设置初始化ThreadPoolExecutor
为120秒keepAliveTime
,我把它放在@Configuration
课堂上.任何人都能告诉我这项工作是否符合我的预期.
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
int coreThreads = 8;
int maxThreads = 20;
final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
coreThreads, maxThreads, 120L,
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()
);
threadPoolExecutor.allowCoreThreadTimeOut(true);
return threadPoolExecutor;
}
Run Code Online (Sandbox Code Playgroud) 我需要编写一个休息服务,它接受XML/JSON作为输入(POST方法)和XML/JSON作为输出(基于输入格式).我尝试过以下方法来实现这一点,但没有帮助.Endpoint方法同时接受XML/JSON但在响应时它总是根据@RequestMapping -produces中指定的顺序提供JSON或XML.任何帮助都将非常感谢.
我的端点方法:
@RequestMapping(value = "/getxmljson", method = RequestMethod.POST,produces={"application/json","application/xml"},
consumes={"application/json", "application/xml"})
public @ResponseBody Student processXMLJsonRequest(@RequestBody Student student)
throws Exception {
System.out.println("*************Inside Controller");
return student;
}
Run Code Online (Sandbox Code Playgroud)
POJO课程:Student.java
import java.io.Serializable;
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@XmlRootElement(name = "student")
@XmlType(propOrder = {"id", "name", "graduationTime", "courses"})
@JsonPropertyOrder({"id", "name", "graduationTime", "courses"})
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String graduationTime;
private ArrayList<Course> courses = new …
Run Code Online (Sandbox Code Playgroud) 尽管使用Logback配置了Hibernate的特定日志记录,我的Spring Boot应用程序仍然在控制台中显示Hibernate查询,如下所示:
<appender name="HIBERNATE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGDIR}/hibernate.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOGDIR}/hibernate.log.%d</fileNamePattern>
</rollingPolicy>
</appender>
<logger name="org.hibernate" additivity="false">
<appender-ref ref="HIBERNATE"/>
</logger>
<logger name="org.hibernate.SQL" additivity="false">
<appender-ref ref="HIBERNATE"/>
</logger>
<logger name="org.hibernate.type.descriptor.sql" additivity="false">
<appender-ref ref="HIBERNATE"/>
</logger>
Run Code Online (Sandbox Code Playgroud)
它会将Hibernate的日志(包括查询)发送到文件hibernate.log
.但我还想避免在控制台中进行查询,我认为应该使用此配置进行查询.
我错过了什么?
我是Spring Data和Spring MVC的新手,我不明白为什么我会得到空的内容:
@RequestMapping(value="/pages", method=RequestMethod.GET)
@ResponseBody
public Page<Client> contactsPages(@RequestParam int page, @RequestParam int size) {
Pageable pageable = new PageRequest(page, size, new Sort("id"));
Page<Client> pageResult = clientRepository.findAll(pageable);
return pageResult;
}
Run Code Online (Sandbox Code Playgroud)
我测试网址时json的结果是:
{"content":[],"last":true,"totalElements":2,"totalPages":1,"size":5,"number":1,"sort":[{"direction":"ASC","property":"id","ignoreCase":false,"nullHandling":"NATIVE","ascending":true}],"first":false,"numberOfElements":0}
Run Code Online (Sandbox Code Playgroud)
如果您有使用Spring Data和Spring MVC以及AngularJS制作可分页请求的好示例; 这对我来说将是一个很大的帮助.
我是春天开发的新手,想知道MediaType.APPLICATION_JSON_VALUE
和之间的区别是
MediaType.APPLICATION_JSON
什么?
我想到两者都代表相同的application/json
内容类型,但如果我把MediaType.APPLICATION_JSON
一些编译器错误显示添加@controller
和@ResponseBody
注释我的休息控制器和什么时候使用MediaType.APPLICATION_JSON
?
@RequestMapping(value="/invite", method = POST, consumes = { MediaType.APPLICATION_JSON })
public @ResponseBody String sendInvite( ... ) { ... }
Run Code Online (Sandbox Code Playgroud) 我试图在IntelliJ中启动一个新的JDK 9项目,但是当我尝试运行它时,我在make过程中遇到以下错误:
错误:java:invalid flag:-release
我知道我没有正确设置但似乎无法找到任何与在IntelliJ中使用Jigsaw建立项目有关的内容.
编辑 这是该问题的屏幕截图.无法在任何地方找到与此相关的任何内容.
我在IDE中没有编译器错误.它只是在build/run命令上失败了.这是一个干净的IntelliJ安装,新的项目从JDK 9开始.
在Spring 4.x中,如果使用扩展的@RestControllerAdvise
(或@ControllerAdvice
),ResponseEntityExceptionHandler
默认情况下,对于标记为的参数,不再返回具有良好且信息丰富的JSON响应主体的默认异常处理@Valid
.
如何在使用ResponseEntityExceptionHandler
基础时返回默认的JSON实体@RestControllerAdvice
?
以下是描述此问题的简单但完整的示例.使用这些类:
@RestController
class CarsController {
@PostMapping("/cars")
public void createCar(@RequestBody @Valid Car car) {
System.out.println("Creating " + car);
throw new WhateverException();
}
@ExceptionHandler(WhateverException.class)
@ResponseStatus(HttpStatus.EXPECTATION_FAILED)
public void handleWhateverException(){
System.out.println("Handling a WhateverException.");
}
}
class Car {
@NotNull
private String make;
@NotNull
private String model;
...getter/setters omitted for brevity...
}
class WhateverException extends RuntimeException {}
Run Code Online (Sandbox Code Playgroud)
如果提交POST
到/cars
与
{
"make": "BMW"
}
Run Code Online (Sandbox Code Playgroud)
它响应a 400
和以下身体:
{ …
Run Code Online (Sandbox Code Playgroud) spring ×9
java ×8
spring-mvc ×5
spring-boot ×4
spring-data ×2
cloud ×1
config ×1
ehcache ×1
hibernate ×1
java-9 ×1
jpa ×1
json ×1
logback ×1
spring-cache ×1
spring-cloud ×1
xml ×1