您的位置:首页 > 编程语言 > Java开发

使用kotlin开发springboot应用

2017-01-05 00:40 288 查看
原文:Developing Spring Boot applications with Kotlin

写在最前头,作为一个java老兵,对于开发更多的是追求一种快直接,简洁,不愿意去写无聊的代码,例如get set 等。而kotlin刚出来的时候,不咋感冒,毕竟其开始是编译成javascript的,对于一个非前端的死忠,还是不怎么感冒的。近期偶然机会看到有android开发使用kotlin的,而且展示了一段java和kotlin的获取view的代码,立马提起了兴趣,由于我是做服务端的,在一阵度娘后,发现了这篇文章,于是自己将原有springboot工程改写成了kotlin和java的混编项目。于是乎,觉得还是翻译一下吧。

然后啰嗦一下,这篇不是翻译,只捡干货。

kotlin是什么

1、kotlin是流行的ide idea的公司 jetbeans出的一种基于jvm的语言
2、它是静态编译的语言,然后有许多的动态语言特性,让你的代码更简洁和清晰
3、它有个外号 swift on android,如同ios的swift语言一样,也如同swift之于objective-c。
所以用它做android开发很爽,号称减少起码一半的代码

4、有些很吸引java老兵的特性,data class 自动生成get set,在也不用写get set方法,虽然eclipse等能帮我生成,但保不齐实体会改,总要补一枪。
扩展,能不用继承就可以扩展类的方法,从此不在为一堆的utils犯愁了。
5、和java有很好的互操作性,可以直接使用java已有的框架和类库,哪样舒服哪样来。

springboot项目引入kotlin

1、pom.xml中加入依赖和plugin
如果用idea 的话,直接config kotlin工程就行


也就是加入了

<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>


和maven的plugin
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>${project.basedir}/src/main/kotlin</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs></sourceDirs>
</configuration>
</execution>
</executions>
</plugin>


当然了我在src/main下建立了一个kotlin目录用于存放kotlin代码

然后你就可以new 一个 kotlin 文件了,文件名称随意。

来个control的例子

@RestController
class CustomerController (val repository:CustomerRepository) {

@GetMapping("/")
fun findAll() = repository.findAll()

@GetMapping("/{name}")
fun findByLastName(@PathVariable name:String)
= repository.findByLastName(name)}
是不是很熟悉啊,springboot里的注解直接使用。
例如@Bean @Autowired 等都是一样一样的

也就是说你想吧springboot的application等代码改成kotlin是完全可行的,只是语法有点区别,其它都一样
注意点:
1、kotlin注解不支持数组的方式。必须改换成如下写法

@RequestMapping(method = arrayOf(RequestMethod.GET))

@EnableAutoConfiguration(exclude = arrayOf(Foo::class))
.

2、属性注入需要转义符号\,因为kotlin自身支持模板$
@Value("\${some.property}")
.

3、对于bean和需要被事务管理的,比如biz service之流,在class前面加上open。因为kotlin默认类是final。
@Component
open class MyTestBizImp :MyTestBiz{

override fun doFirst(){
....
}
}

java怎么调用kotlin
比如是用mybatis,使用到mapper xml文件这个时候
使用package 名+类名就行了和java是一致的。例如

package xx.xx.xx
class MyEntity {
var name:String =""
}

interface TestMapper {

}

这样mybatis的mapper接口定义及使用到的实体均可以使用kotlin来编写。

最后就是用idea,其中自带kotlin编辑器,拷贝java代码到kotlin编辑器,它会自动把java代码转成kotlin的 so cool。

总结
作为一个具有强迫症和洁癖的开发来说,使用kotlin来编写业务代码是一种比较可行的方式,尤其是混编模式下,旧有的功能代码不用调整,极大的保护了资产和提供了尝试的可行性。
其简洁的语法尤其适应于业务代码的编写,哪些interface和其imp可以丢在一个文件里了,反正也没别的模块用^_^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java springboot kotlin