머리말
이 기사는 Spring Boot2의 기본에서 Kotlin을 사용하는 방법을 설명하고 완벽하게 통합하고 완벽하게 혼합합니다. 독자가 Kotlin의 구문 설탕에 더 친숙하게 만들기 위해, 저자는 Kotlin의 새로운 기능과 구문 설탕에 대해 여러 기사에서 이야기 할 것입니다. 나는 아래에서 많이 말하지 않을 것입니다. 자세한 소개를 살펴 보겠습니다.
POM 파일을 수정하고 스프링 부팅 종속성을 추가하십시오.
<부모> <groupid> org.springframework.boot </groupid> <artifactid> Spring-Boot-Starter-Parent </artifactid> <bersion> version> 2.0.2.2.20.2. release </version/> </parent> <pectionals> <pection> <groupid> org.springframewort </groupid> <artifactid> Spring-Boot-Starter </artifactid> </fectionency> <pectionement> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </aftifactid> </fexendence> <groupid> org.springframework.boot> <artifactid> 스프링 부트 스타터 -jdbc </artifactid> </의존성> </의존성>
그 후 즉시 MySQL 종속성을 추가해야합니다.
<pectionency> <groupId> mySQL </groupId> <artifactID> mySQL-connector-java </artifactid> <버전> 5.1.35 </version> </dependency> <prectionency> <groupId> com.alibaba </groupid> <artifactid> druid </areptifactid> 1.0.14 </version> 1.14
마지막으로 Kotlin 의존성을 추가하십시오.
<pectionency> <groupid> org.jetbrains.kotlin </groupid> <artifactid> kotlin-stdlib-jdk8 </artifactid> </dependency> <groupid> org.jetbrains.kotlin </groupid> <artifactid> kotlin-reftrect> </felevence> <groupid> org.jetbrains.kotlin </groupid> <artifactid> kotlin-stdlib </artifactid> </fectionency>
Kotlin에서 데이터 클래스에는 기본적으로 매개 변수가없는 생성자 가 없으며 데이터 클래스 기본값이 최종 유형으로 표시되지 않으며 상속받을 수 없습니다. Spring + Kotlin 모드를 사용하면 @autowared를 사용하면이 문제가 발생할 수 있습니다. 따라서 NOARG를 추가하여 매개 변수가없는 생성자를 주석이없는 클래스로 생성 할 수 있습니다. allopen을 사용하여 주석이 달린 클래스의 최종을 제거하고 상속을 허용하십시오.
<Flugin> <ArtifactID> Kotlin-Maven-Plugin </artifactid> <groupid> org.jetbrains.kotlin </groupid> <version> <version> <version> </version> <execution> <execution> <id> compile </id> <Goals> compile> <id> <goving> <goving- 컴파일 </goal> </goals> </execution> </execution> </execution> </execution> <pectionies> <pectionency> <groupid> org.jetbrains.kotlin </groupIcid> <artifactid> kotlin-maven-noarg </artifactid> </version> $ {kotlin. <groupid> org.jetbrains.kotlin </groupid> <artifactid> Kotlin-Maven-Alopen </artifactid> <버전> $ {kotlin.version} </version> </dependency> </dependencies> </plugin>이 시점에서 Maven의 종속성 환경은 대략 구성되었습니다. 전체 소스 코드의 경우 기사 끝의 Github 저장소를 참조 할 수 있습니다.
Spring Boot Default 구성을 사용하면 DataSource 및 JDBCTemplate Bean을 만들 필요가 없습니다.
SRC/Main/Resources/Application.Properties에서 데이터 소스 정보를 구성하십시오.
spring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc : mysql : // localhost : 3307/springboot_dbspring.datasource.username = rootspring.datasource.password = root
src/main/resources/config/source.properties에서 데이터 소스 정보를 구성하십시오.
# mysqlsource.driverclassName = com.mysql.jdbc.driversource.url = jdbc : mysql : // localhost : 3306/springboot_dbsource.username = rootsource.password.password.password
여기에서 DataSource 및 JDBCTemplate을 만듭니다.
@configuration @enableTransactionManagement @PropertySource (value = *arrayof ( "classpath : config/source.properties")) 열린 클래스 BeanConfig {@autowired private lateinit var var : 환경 @bean open fun dataSource () : dataSource {val dataSource = druiddatasource () dataSource.drivercource.driverclashname. Env !!. GetProperty ( "source.driverClassName"). trim () dataSource.url = Env.getProperty ( "source.url"). trim () dataSource.username = Env.getProperty ( "source.username"). trim () dataSource.password = Env.getProperty ( "source.borce oforce} @getProperty ("source.pass " FUN JDBCTEMPLATE () : JDBCTEMPLATE {val jdbctemplate = jdbctemplate () jdbctemplate.datasource = dataSource () return jdbctemplate}}}먼저 필요한 SQL 스크립트를 초기화하십시오.
존재하지 않는 경우 데이터베이스 작성 /*! `springboot_db`를 사용하십시오; `t_author`가 존재하는 경우 드롭 테이블; 테이블 생성`t_author` (`id` bigint (20) unull auto_increment comment 'user id',`real_name` varchar (32) null 댓글 '사용자 이름',`nick_name` varchar (32) null 주석 '사용자 익명', 기본 키 (`id`))) null 주석 ')))))) auto_increment가 null 코멘트')).
클래스 저자 {var id : long? = null var realname : 문자열? = null var 닉네임 : 문자열? = null} Interface AuthorDao {fun add (저자 : 저자) : int fun update (저자 : 저자) : int fun delete (id : long) : int fun findauthor (id : long) : author? 재미있는 findauthorlist () : list <author>}구현 클래스를 정의하고 jdbctemplate을 통해 데이터에 액세스 해 봅시다.
@RepositoryOpen 클래스 AuthorDaoimpl : authordao {@autowired private lateinit var jdbctemplate : jdbctemplate 이상 재미 add (저자 : author) : int {return jdbctemplate.update ( "real_name, nick_name (?) value (?) int {return {return jdbctemplate.update ( "update t_author set real_name =?, nick_name =? where id =?", *arrayof (author.realname, author.nickname, author.id))} underide delete (id : long) : int {return jdbctemplate. " id)} 재미있는 findauthor (id : long) : 저자? {val list = jdbctemplate.query <auther> ( "선택 *에서 t_author에서 id =? } 재미있는 findauthorList () : list <auther> {return jdbctemplate.query ( "select * from t_author", arrayof (), beanPropertyRowMapper (author :: class.java)}}}}}}}}}}}}. 인터페이스 authorservice {fun add (저자 : 저자) : int fun update (저자 : 저자) : int fun delete (id : long) : int fun findauthor (id : long) : author? 재미있는 findauthorlist () : list <author>}구현 클래스를 정의해 봅시다. 서비스 계층은 DAO 계층 방법을 호출합니다. 이것은 전형적인 일상입니다.
@Service ( "authorService") Open Class AuthorServiceImpl : orderorService {@autowired private lateinit var authordao : authordao 재정의 재미있는 업데이트 (저자) : int {return this.authordao.update (저자)} 오버라이드 펀드 추가 (저자) : int {return this this this. 이 is.authordao.delete (id)} 재미있는 findauthor (id : long) : 저자? {return this.authordao.findauthor (id)} 재미있는 findauthorlist ()를 재정의합니다. list <author> {return this.authordao.findauthorlist ()}}}효과를 보여주기 위해 먼저 테스트를위한 간단한 RESTFUL API 인터페이스 세트를 정의합니다.
@restController (value = "/authors") 클래스 authorController {@autowired private lateinit var authorService : authorService/*** 쿼리 사용자 목록*/@requestmapping (method = [requestmethod.get]) fun getAuthorList (httpservletRequest) : map <string> this.authorservice.findauthorlist () val param = hashmap <string, any> () param [ "total"] = authorlist.size param [ "rows"] = auderlist return param}/*** Query 사용자 정보*/@requestmapping (value = "/{userId : // d+}" long, request : httpservletrequest) : author {return authorervice.findauthor (userId)? : runtimeexception ( "query error"}} / *** new method* / @requestmapping (method = [requestMethod.post]) fun add (@requestbody jsonobject : Jsonobject) {val user vermerid = jsonobstring (val user jsonobject)) realname = jsonobject.getString ( "real_name") val nickname = jsonobject.getString ( "nick_name") val author = author () author () author.id = java.lang.long.valueof (userId) author.realName = RealName author.nickName = nickName try {this.authorservice.add (ehorthorservice.add). runtimeexception ( "new Error")}}/*** 업데이트 메소드*/@requestmapping (value = "/{userId : // d+}", method = [requestMethod.put]) fun update (@PathVariable userID : long, var var worktorsvices.findauthorservice.findauthorsvice.findauthorservice.findauthorservice.findauthorservice.findauthorservice.findauthorservice.findauthorservices. jsonobject.getString ( "real_name") val nickname = jsonobject.getString ( "nick_name") try {if (author! = null) {author.realname = realName = kickname this.autherService.update (author)}} catch (e : experce) {runtimeexcement ( "regure remence (")}} 메소드*/@RequestMapping (value = "/{userId : // d+}", method = [requestMethod.delete]) fun delete (@pathvariable userId : long) {threy {this.authorService.delete (e : experce) {throw runtimeexception ( "delete error")}}}}}}}}}마지막으로 SpringKotlinApplication을 통해 프로그램을 실행합니다.
@SpringBootApplication (scanbasepackages = [ "com.lianggzone.demo.kotlin"]) 열린 클래스 SpringKotlinApplication {fun main (args : array <string>) {springApplication.Run (springKotlinApplication :: class.java, *args)}}}}}}}}}}여기서 저자는 Idea의 편집기 REST 클라이언트를 권장합니다. Idea의 Editor REST Client는 Intellij Idea 2017.3 버전에서 지원되었으며 2018.1 버전에 많은 기능을 추가했습니다. 실제로 Intellij Idea 용 HTTP 클라이언트 플러그인입니다. Me의 다른 이전 기사보기 : API 인터페이스에 대한 새로운 기술을 빠르게 테스트하십시오.
### 쿼리 사용자 목록 get http : // localhost : 8080/authorcept : application/jsoncontent-type : application/json; charset = utf-8 ### query 사용자 정보 http : // localhost : 8080/authors : application/jsoncontent-type : charset = utf-8##8#8#8#8#################11 http : // localhost : 8080/authorscontent-type : application/json { "user_id": "21", "real_name": "liang guizhao", "nick_name": "liang guizhao"} ### 업데이트 방법 http : // localhost : 8080/aughors/jugors/21content-type : "real_name": "liangzzone", "nick_name": "liangznone"} ### 삭제 방법 삭제 http : // localhost : 8080/auderors/21accrect : application/jsoncontent-type : application/json; charset = utf-8위의 간단한 경우를 통해 Spring Boot로 Kotlin을 통합하고 Spring Applications의 초기 구성 및 개발 프로세스를 단순화하는 것이 매우 쉽다는 것을 발견했습니다. 독자가 Kotlin의 구문 설탕에 더 친숙하게 만들기 위해, 저자는 Kotlin의 새로운 기능과 구문 설탕에 대해 여러 기사에서 이야기 할 것입니다.
소스 코드
관련 예제 완전 코드 : Spring-Kotlin-Samples (로컬 다운로드)
좋아, 위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.