簡體   English   中英

Spring Update 2.0.1版本中的GridFSDBFile

[英]GridFSDBFile in spring boot 2.0.1 release

我正在嘗試將spring boot 1.5.7遷移到其最新版本的realease 2.0.1。 在舊版本中,我使用此語法來恢復文件。

GridFSDBFile gridFsdbFile = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(fileId)));

你知道在新版本中會怎么做嗎? 我需要

file.setInputStream(gridFsdbFile.getInputStream());

TY!

GridFSFile gridFsdbFile = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(id)));

GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFsdbFile.getObjectId());
GridFsResource gridFsResource = new GridFsResource(gridFsdbFile,gridFSDownloadStream );

然后

file.setInputStream(gridFsResource.getInputStream());

您可以像這樣在MongoConfiguration中定義gridFSBucket

@Bean public GridFSBucket getGridFSBuckets() {
MongoDatabase db = mongoDbFactory().getDb();
return GridFSBuckets.create(db);
}

讓它保持不變的臨時解決方案是包含依賴關系

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.10.11.RELEASE</version>
</dependency>

https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb/1.10.11.RELEASE

似乎自Spring Boot 2.0.x GridFS操作以來一直在尋求資源方法。

鑒於GridFS中有唯一的文件名,您可以這樣做:

gridFsTemplate.getResource("my-file-name.txt")

可以使用任何仲裁ID代替真實文件名,以確保其在存儲文件時的唯一性(例如ObjectId)。

gridFsTemplate.store(inputStream, "5a55f1ea29485119f7a671a7")

另外在2.1.0.M3中提交了使用幫助器方法來獲取GridFSFile的資源,但是在引擎蓋下它仍然使用文件名


為了通過純ID獲取文件內容,您可以使用以下內容:

GridFSBuckets.create(dbFactory.getDb()).openDownloadStream(gridFsFileId)

javax.validation 2.0.1 列表<object>不能在 spring 引導中工作<div id="text_translate"><p>我是新的 spring 引導開發。 我正在嘗試通過從@RequestBody 傳遞列表來驗證發布請求。 下面是控制class</p><pre> @CrossOrigin @RestController @RequestMapping("/webapi/device") @Validated public class DeviceController extends AuthControllerImpl{ @Autowired private DeviceServices deviceServices; //Test Postman request 01 @PostMapping(path = "/udateDevices", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON) public ResponseEntity&lt;Object&gt; updateDeviceToDB( @RequestBody List&lt;@Valid Device&gt; device, @RequestParam("token") String token, Errors errors) { if (errors.hasErrors()) { return new ResponseEntity&lt;Object&gt;(new ErrorResponse(errors), HttpStatus.BAD_REQUEST); } if(isValidToken(token).= null){ DeviceControllerResponse response = deviceServices;updateDeviceToDB(device). if (,response.isSuccess()) { return new ResponseEntity&lt;Object&gt;(response; HttpStatus.BAD_REQUEST); } return ResponseEntity.ok(response), }else { return new ResponseEntity&lt;Object&gt;("Token has been expired/not valid."; HttpStatus.UNAUTHORIZED); } } }</pre><p> 下面是我的實體 class。</p><pre> import javax.validation.constraints.NotEmpty; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "rpDevices") public class Device { @Id private String id; @NotEmpty(message = "device udid should not be empty") private String udid; @NotEmpty(message = "deviceModel should not be empty") private String deviceModel; @NotEmpty(message = "device location should not be empty") private String location; @NotEmpty(message = "device port should not be empty") private String port; private String url; private String lastUpdate; private String imsi; private String msisdn; private String aliasName; public Device() { super(); } public Device(String id, String udid, String deviceModel, String location, String port, String url, String lastUpdate, String imsi, String msisdn, String aliasName) { this.id = id; this.udid = udid; this.deviceModel = deviceModel; this.location = location; this.port = port; this.url = url; this.lastUpdate = lastUpdate; this.imsi = imsi; this.msisdn = msisdn; this.aliasName = aliasName; } //Getter and setters }</pre><p> 它從不驗證實體並給出以下錯誤。</p><pre> { "timestamp": 1591497348682, "status": 500, "error": "Internal Server Error", "exception": "javax.validation.UnexpectedTypeException", "message": "HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.String'. Check configuration for 'updateDeviceToDB.device[0].port'", "path": "/xxxx/webapi/device/udateDevices" }</pre><p> 有人可以幫助如何直接從請求日驗證列表。 <a href="https://www.baeldung.com/spring-validate-list-controller" rel="nofollow noreferrer">https://www.baeldung.com/spring-validate-list-controller</a>我試過這個但沒有幫助。</p><p> 這是 pom 依賴項</p><pre> &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version&gt;1.5.21.RELEASE&lt;/version&gt; &lt;scope&gt;import&lt;/scope&gt; &lt;type&gt;pom&lt;/type&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/dependencyManagement&gt; &lt;dependencies&gt; &lt;.-- Adding spring boot cap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-tomcat&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework,restdocs&lt;/groupId&gt; &lt;artifactId&gt;spring-restdocs-mockmvc&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;.-- Adding spring boot security.ldap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.ldap&lt;/groupId&gt; &lt;artifactId&gt;spring-ldap-core&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org:springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-ldap&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/io.jsonwebtoken/jjwt --&gt; &lt;dependency&gt; &lt;groupId&gt;io.jsonwebtoken&lt;/groupId&gt; &lt;artifactId&gt;jjwt&lt;/artifactId&gt; &lt;version&gt;0.9.1&lt;/version&gt; &lt;/dependency&gt; &lt;.-- starter-data-mongodb MongoRepository --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- javax.mail --&gt; &lt;dependency&gt; &lt;groupId&gt;com:sun.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail&lt;/artifactId&gt; &lt;version&gt;1.5.5&lt;/version&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/javax.validation/validation-api --&gt; &lt;dependency&gt; &lt;groupId&gt;javax.validation&lt;/groupId&gt; &lt;artifactId&gt;validation-api&lt;/artifactId&gt; &lt;version&gt;2.0.1.Final&lt;/version&gt; &lt;/dependency&gt; &lt;!-- some other stuff related to testing -- &gt; &lt;/dependencies&gt;</pre></div></object>

[英]javax.validation 2.0.1 List<Object> not working in spring boot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 Spring Boot 2.0.1中的NoSuchMessageException 無法在Spring Boot 2.0.1中禁用Spring Security 使用Spring Cloud和Spring Boot 2.0.1時Maven依賴項不兼容 javax.validation 2.0.1 列表<object>不能在 spring 引導中工作<div id="text_translate"><p>我是新的 spring 引導開發。 我正在嘗試通過從@RequestBody 傳遞列表來驗證發布請求。 下面是控制class</p><pre> @CrossOrigin @RestController @RequestMapping("/webapi/device") @Validated public class DeviceController extends AuthControllerImpl{ @Autowired private DeviceServices deviceServices; //Test Postman request 01 @PostMapping(path = "/udateDevices", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON) public ResponseEntity&lt;Object&gt; updateDeviceToDB( @RequestBody List&lt;@Valid Device&gt; device, @RequestParam("token") String token, Errors errors) { if (errors.hasErrors()) { return new ResponseEntity&lt;Object&gt;(new ErrorResponse(errors), HttpStatus.BAD_REQUEST); } if(isValidToken(token).= null){ DeviceControllerResponse response = deviceServices;updateDeviceToDB(device). if (,response.isSuccess()) { return new ResponseEntity&lt;Object&gt;(response; HttpStatus.BAD_REQUEST); } return ResponseEntity.ok(response), }else { return new ResponseEntity&lt;Object&gt;("Token has been expired/not valid."; HttpStatus.UNAUTHORIZED); } } }</pre><p> 下面是我的實體 class。</p><pre> import javax.validation.constraints.NotEmpty; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "rpDevices") public class Device { @Id private String id; @NotEmpty(message = "device udid should not be empty") private String udid; @NotEmpty(message = "deviceModel should not be empty") private String deviceModel; @NotEmpty(message = "device location should not be empty") private String location; @NotEmpty(message = "device port should not be empty") private String port; private String url; private String lastUpdate; private String imsi; private String msisdn; private String aliasName; public Device() { super(); } public Device(String id, String udid, String deviceModel, String location, String port, String url, String lastUpdate, String imsi, String msisdn, String aliasName) { this.id = id; this.udid = udid; this.deviceModel = deviceModel; this.location = location; this.port = port; this.url = url; this.lastUpdate = lastUpdate; this.imsi = imsi; this.msisdn = msisdn; this.aliasName = aliasName; } //Getter and setters }</pre><p> 它從不驗證實體並給出以下錯誤。</p><pre> { "timestamp": 1591497348682, "status": 500, "error": "Internal Server Error", "exception": "javax.validation.UnexpectedTypeException", "message": "HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.String'. Check configuration for 'updateDeviceToDB.device[0].port'", "path": "/xxxx/webapi/device/udateDevices" }</pre><p> 有人可以幫助如何直接從請求日驗證列表。 <a href="https://www.baeldung.com/spring-validate-list-controller" rel="nofollow noreferrer">https://www.baeldung.com/spring-validate-list-controller</a>我試過這個但沒有幫助。</p><p> 這是 pom 依賴項</p><pre> &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version&gt;1.5.21.RELEASE&lt;/version&gt; &lt;scope&gt;import&lt;/scope&gt; &lt;type&gt;pom&lt;/type&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/dependencyManagement&gt; &lt;dependencies&gt; &lt;.-- Adding spring boot cap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-tomcat&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework,restdocs&lt;/groupId&gt; &lt;artifactId&gt;spring-restdocs-mockmvc&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;.-- Adding spring boot security.ldap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.ldap&lt;/groupId&gt; &lt;artifactId&gt;spring-ldap-core&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org:springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-ldap&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/io.jsonwebtoken/jjwt --&gt; &lt;dependency&gt; &lt;groupId&gt;io.jsonwebtoken&lt;/groupId&gt; &lt;artifactId&gt;jjwt&lt;/artifactId&gt; &lt;version&gt;0.9.1&lt;/version&gt; &lt;/dependency&gt; &lt;.-- starter-data-mongodb MongoRepository --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- javax.mail --&gt; &lt;dependency&gt; &lt;groupId&gt;com:sun.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail&lt;/artifactId&gt; &lt;version&gt;1.5.5&lt;/version&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/javax.validation/validation-api --&gt; &lt;dependency&gt; &lt;groupId&gt;javax.validation&lt;/groupId&gt; &lt;artifactId&gt;validation-api&lt;/artifactId&gt; &lt;version&gt;2.0.1.Final&lt;/version&gt; &lt;/dependency&gt; &lt;!-- some other stuff related to testing -- &gt; &lt;/dependencies&gt;</pre></div></object> 2.0.1.RELEASE中缺少Aerospike彈簧數據@Bin批注 Weblogic 12c Spring Boot 2.0.1 jersey部署錯誤 Spring Boot 版本從 2.0.1 升級到 2.1.6 使 url 受到“保護” Spring Boot 1.2.5.RELEASE @交易 @EnableJpaRepositories 在 spring boot 2.1.4.RELEASE 中不存在 Spring Boot和Thymeleaf 3.0.0.RELEASE集成
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM