Tag: 弹簧

异步春季启动使用Kotlin无法正常工作

我正在尝试创建一个异步执行操作的Spring服务,并返回一个ListenableFuture 。 我希望在操作失败时触发失败回调 – 我尝试这样做是使用AsyncResult.forExecutionException ,如下所示: @Service open class UserClientService { @Async fun fetchUser(email: String): ListenableFuture { val uri = buildUri(email) val headers = buildHeaders() try { val result = restTemplate.exchange(uri, HttpMethod.GET, HttpEntity(headers), User::class.java) return AsyncResult.forValue(result.body) } catch (e: RestClientException) { return AsyncResult.forExecutionException(e) } } } 入门点: @SpringBootApplication @EnableAsync open class UserProxyApplication fun main(args: Array) […]

从Java 6迁移到Kotlin

我有一些在Java 6和Spring应用服务器上的项目。 由于我的基础架构和治理规划的限制,我无法迁移到较新的Java 7或8。 我想我可以在这些项目中添加Kotlin,以使用function性编程等function。 这是一个很好的途径吗? 谢谢

如何在基本types中使用kotlin中的@Autowired或@Value等Spring注解?

使用类似Spring的注释自动assembly非基元 @Autowired lateinit var metaDataService: MetaDataService 作品。 但是这不起作用: @Value(“\${cacheTimeSeconds}”) lateinit var cacheTimeSeconds: Int 有一个错误: 基元types不允许使用lateinit修饰符。 如何autotire primitve属性到kotlin类?

即使使用noarg插件,也没有使用Kotlin的JPA实体的默认构造函数

我已经读过,你需要为实体类使用kotlin-maven-noarg编译器插件,以便它生成默认参数少的构造函数。 但是应用程序不会以下列错误开始: 没有实体的默认构造函数 你能告诉我我做错了什么吗? pom.xml中: 4.0.0 {…} src/main/java src/main/resources src/test/java src/test/resources maven-compiler-plugin 3.1 1.8 1.8 org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version} compile compile compile test-compile test-compile test-compile org.apache.maven.plugins maven-compiler-plugin compile compile compile testCompile test-compile testCompile kotlin-maven-plugin org.jetbrains.kotlin ${kotlin.version} jpa jpa:annotation=javax.persistence.Entity org.jetbrains.kotlin kotlin-maven-noarg ${kotlin.version} {…} 4.12 1.1.0 {…} org.jetbrains.kotlin kotlin-stdlib ${kotlin.version} org.jetbrains.kotlin kotlin-test ${kotlin.version} test org.jetbrains.kotlin kotlin-reflect ${kotlin.version} 测试课: […]

Jersey CORS配置允许来自服务器的响应cookie

我有一个泽西岛REST接口,我希望在每个请求的响应中发送cookie,但在任何响应中都不会出现cookie。 我有一种感觉,这是一个CORS的问题,我不知道什么CORSResponseFilter配置我需要允许设置cookie并成功发送响应。 我的项目是用Kotlin下的SpringBoot构建的。 响应码: @POST fun put(): Response { val cookie = NewCookie(Cookie(“RESERVATION”, “TEST”), “Session”, 60 * 60, false) return ok() .cookie(cookie) .entity(Result(“OK”, “Success”)) .build() } 过滤代码: open class CORSResponseFilter : ContainerResponseFilter { override fun filter(req: ContainerRequestContext?, res: ContainerResponseContext?) { res?.headers?.add(“Access-Control-Allow-Origin”, “*”) res?.headers?.add(“Access-Control-Allow-Methods”, “POST, GET”) res?.headers?.add(“Access-Control-Allow-Headers”, “origin, content-type, accept, authorization”) res?.headers?.add(“Access-Control-Expose-Headers”, “Set-Cookie”) res?.headers?.add(“Access-Control-Allow-Credentials”, “true”) } […]

Docs for Spring告诉我,myRepository.findOne(Id id)返回实体,如果没有find,则返回null,但IntelliJ说不同

我正在使用IntelliJ在Kotlin中进行编程实验。 我想检查我的实体findOne()返回是否存在通过检查是否为空,但IntelliJ显示警告: 条件’visitRankEntity!= null’总是’真’ 我在这里错过了什么? 为什么IntelliJ显示警告? @编辑 好的,当我加入时警告消失了? VisitRankEntity之后,所以行看起来像: var visitRankEntity: VisitRankEntity? = visitRankRepository.findOne(WebfineryUtils.getDomainName(url)) 既然我是Kotlin的新手,我忘了? 。 但是,如果该方法可以返回null,IntelliJ应该不会告诉我这个事实吗?

不明白如何使通量订阅在kotlin工作

我是新来的反应式编程。 我期待看到 test provider started Beat 1000 Beat 2000 在日志中,但是只有test provider started并且没有Beat或on complete消息。 看起来我想念一些东西 @Service class ProviderService { @PostConstruct fun start(){ val hb: Flux = Flux.interval(Duration.ofSeconds(1)).map { HeartBeat(it) } val provider = Provider(“test”, hb) } } //////////////////////// open class Provider(name: String, heartBests: Flux) { companion object { val log = LoggerFactory.getLogger(Provider::class.java)!! } init { log.info(“$name […]

什么时候在Spring Boot应用程序的生命周期中Kotlin内省可用?

我遇到了一个令人惊讶的错误。 我正在尝试使用存储库模式访问mongodb的应用程序。 为了减少代码重复,我想为所有的存储库建立一个通用的基类。 每个根集合(如下面的代码中的Person )的RepositoryBase将从此RepositoryBaseinheritance,并inheritance所有常用function。 data class Person(val name: String) open class RepositoryBase (val template: ReactiveMongoTemplate, private val klass: KClass) { fun count(): Mono = template.count(Query(), klass.java) } @Repository class PersonRepository(template: ReactiveMongoTemplate): RepositoryBase(template, Person::class) @RunWith(SpringRunner::class) @SpringBootTest class DemoApplicationTests { @Autowired var personRepository: PersonRepository? = null @Test fun contextLoads() { println(personRepository?.count()?.block()!!) } } 但是,这似乎并不奏效: java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.JvmClassMappingKt.getJavaClass,参数$ receiver […]

Kotlin NoClassDefFoundError和spring @RequestMapping方法

我试图用Kotlin + IntelliJ来学习一些spring的基础知识,而且我遇到了一些麻烦。 @RequestMapping带注释的方法(带参数)会导致exception,而Java等价物完全正常。 Kotlin代码工作正常,但只有没有“processFormTwo”方法(将工作Java代码转换为kotlin也无济于事)。 这里是代码: @Controller class HelloWorldController { @RequestMapping(“/showForm”) fun showForm() = “helloworld-form” // this one works fine @RequestMapping(“/processForm”) fun processForm() = “helloworld” //this one doesn’t @RequestMapping(“/processFormTwo”) fun processFormTwo(request: HttpServletRequest, model: Model): String { var theName = request.getParameter(“studentName”) theName = theName.toUpperCase() val result = “Yo! ” + theName model.addAttribute(“message”, result) return “helloworld” } […]

使用kotlin在Spring Boot中自定义Jersey ExceptionMapper

我无法用Spring Boot和Kotlin注册一个自定义的ExceptionMapper。 @Configuration @ApplicationPath(“/api”) class JerseyConfig : ResourceConfig() { init { register(JWTAuthExceptionMapper::class.java) .register(GsonProvider::class.java) .register(PingResource::class.java) .register(AuthResource::class.java) } } 映射器: import org.springframework.stereotype.Component import javax.ws.rs.core.Response import javax.ws.rs.ext.ExceptionMapper import javax.ws.rs.ext.Provider @Provider @Component class JWTAuthExceptionMapper() : ExceptionMapper { override fun toResponse(exception: JWTAuthException?): Response { return Response.status(Response.Status.UNAUTHORIZED).entity(exception?.message).build() } } JWTAuthException不调用toResponse方法。 我想念什么?