SpringBoot는 SpringMVC로 업그레이드되어 인코딩, 구성, 배포 및 모니터링이 더 쉽습니다.
마이크로 서비스
마이크로 서비스는 큰 단일 애플리케이션과 서비스를 수십 개의 지원되는 마이크로 서비스로 분할하는 새로운 소프트웨어 아키텍처입니다. 마이크로 서비스 전략을 사용하면 작업을보다 쉽게 만들 수 있으며, 이는 전체 애플리케이션 스택 대신 단일 구성 요소를 확장하여 서비스 수준 프로토콜을 충족시킬 수 있습니다.
Spring은 마이크로 서비스를위한 전체 구성 요소 세트를 제공합니다 - SpringClound, Spirngboot가 기본입니다.
첫 번째 SpringBoot 프로그램
여기에 사용 된 개발 소프트웨어는 Intellij 아이디어이며,이 클립스와 크게 다르지 않으며 더 멋진 인터페이스와 더 강력한 기능이 있습니다. Android Studio는 Intellij를 기반으로 개발되었습니다. 나는 이전에 Android Studio를 사용했으며 두 인터페이스는 거의 동일합니다.
Intellij Idea 공식 웹 사이트 : http://www.jetbrains.com/idea/
Maven, Tomcat, JDK를 구성한 후에는 사용할 수 있습니다
Maven이 구성한 중앙 창고의 Alibaba Cloud 이미지,이 주소에서 JAR 패키지를 다운로드하는 속도는 누구를 사용하는지 아는 사람입니다!
setting.xml
.. <mirrors> <mirror> <id> alimaven </id> <name> aliyun maven </name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> <mirrorof> central </mirrorof> </mirror>. .
아이디어로 SpringBoot 프로젝트를 만듭니다
내 아이디어 버전 : Intellij Idea 2016.3.1
프로젝트 구조는 다음과 같습니다.
프로젝트의 기본 maven pom.xml 파일
pom.xml
<? xml version = "1.0"encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.xsd"> <modeversion> 4.0.0 </modelversion> <groupid> com.jxust> <artifactid> sphorngbootdemo <버전> 0.0.1-snapShot </version> <packaging> jar </packaging> <name> spirngbootdemo </name> <description> 스프링 부츠를위한 데모 프로젝트 </descript> <perforid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid>. <RelativePath/> <!-리포지토리에서 부모를 조회합니다 .-> </parent> <properties> <proffice.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.worting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> 1.8. </properties> <pectionilency> <pectinement> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <groupid> org.springframework.boot </group-actid> springbboot </artifactid> <Scope> 테스트 </scope> </dependency> </dependencies> <빌드> <grugins> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins> </project>
SpirngbootdemoApplication의 주요 방법을 실행하면 실행을 시작할 수 있습니다.
다른 시작 방법은 비디오 자습서 http://www.imooc.com/learn/767/을 참조하십시오.
콘솔 출력 :
"C :/Program Files/Java/JDK1.8.0_91/bin/java".... ____ __ __ /// ___'_ __ __ __ _ (_) _) __ ___ __ / / / (() / ___ | ___ | .__ || | _ | | _ | | _/__, | / / / / / ==================================____/=/_/_/ :: Spring Boot :: (v1.4.2.RELEASE) 2016-12-16 14:56:52.083 INFO 15872 --- [ main] osjeaAnnotationMBeanExporter : Registering beans for JMX exposure on startup2016-12-16 14 : 56 : 52.215 정보 15872 --- [Main] SBCETTOMCATEMBEDDEDSERVLETCONTAINER : TOMCAT는 항구에서 시작되었습니다 (S) : 8080 (HTTP) 2016-12-16 14 : 56 : 52.255 정보 15872 --- [MAIN] SBCETTOMCATEMBEDDEDSERVLETCATETANER : TOMCONTANER : 포트 (S) : 8080 (HTTP) 2016-12-16 14 : 56 : 52.255 정보 15872 --- [Main] SBCETTOMCATEMBEDDEDSERVLETCONTAINER : TOMCAT가 항구에서 시작되었습니다 (S) : 8080 (HTTP) 2016-12-16 14 : 56 : 52.255 Infor 15872-- [Main] SBCETTEMETERTER : Tomcat은 항구에서 시작하여 : 8080 (HTTP) 2016-12-16 14 : 56 : 52.255 정보 15872 --- [main] com.jxust.spirngbootdemoapplication : 7.795 초 안에 spirngbootdemoapplication (9.177에서 JVM 실행).
여기에서 Tomcat의 포트 번호를 볼 수 있습니다. 사용자 정의 컨트롤러가 없으므로 아직보기가 없습니다. Hello SpringBoot!를 출력하는 뷰를 만들어 봅시다.
컨트롤러 패키지 아래에 위치한 HelloController를 만듭니다
hellocontroller.java
package com.jxust.controller; import org.springframework.web.bind.annotation.getmapping; import org.springframework.web.bind.annotation.restcontroller;/** * time : 2016/12/16 15:45 */@restController Class Hellocontroller {restController { @requestmapping ( "/hello") public String says () {return "Hello SpringBoot!"; }}@RestController Spring4 이후 새 주석. Returning JSON은 @ResponseBody가 @Controller와 협력해야한다는 것이 밝혀졌습니다. 이제 하나는 최고입니다
브라우저에 http : // localhost : 8080/hello를 입력하여 문장을 출력하여 Hello SpringBoot!
사용자 정의 속성 구성
Application.Properties 파일이 사용됩니다
포트 번호 및 액세스 접두사를 구성하십시오
application.propertiesserver.port = 8081server.context-path =/springboot
.properties 형식 파일을 사용하는 것 외에도 .yml 형식 구성 파일 (권장)을 사용할 수도 있습니다.
application.yml
원본 application.properties 파일을 삭제하십시오
형식에주의를 기울이면 공간이 빠질 수 없습니다
구성 파일에서 속성 값을 가져옵니다
구성 파일에서 데이터를 구성하고 컨트롤러에서이를 얻을 수도 있습니다.
application.yml
서버 : 포트 : 8081 Context-Path : /SpringBootName : Xiaopang
HelloController 구성 파일에서 값을 가져옵니다
hellocontroller.java
.... @restControllerPublic 클래스 HelloController {@Value ( "$ {name}") 개인 문자열 이름; @requestmapping (value = "/hello", method = requestmethod.get) public String says () {return name; }} 반환 된 이름 값
구성 파일의 값 구성 메소드의 다각화
구성 파일의 값은 다음과 같이 여러 또는 결합 될 수 있습니다.
application.yml
이름 : Xiaopang Age : 22 또는 이름 : Xiaopang Age : 22Content : "name : $ {name}, Age : $ {age}"또는 서버 : 포트 : 8081 Context-Path : /Springbootperson : 이름 : Xiaopang Age : 22처음 두 구성은 값을 얻는 것과 동일하지만이 방법의 경우 사람은 두 가지 해당 속성을 가지고 있으며,이 방법으로 처리해야합니다.
PersonProperties.java
PACKED COM.JXUST; import org.springframework.boot.context.properties.configurationProperties; import org.spramepramework.stereotyp.component;/** * peng * time : 2016/12/16 16:34 */@configurationProperties (previcent@persone "); 개인 정수 시대; 공개 문자열 getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public integer getage () {return age; } public void setage (정수 시대) {this.age = age; }}alt+getter and setter를 생성하기 위해 바로 가기 키 프롬프트를 삽입하십시오
POM.XML은 경고를 처리하기 위해 다음 종속성을 추가해야합니다.
<pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링 버전-컨퍼런스-프로세서 </artifactid> <selection> true </옵션> </dependency>
hellocontroller.java
package com.jxust.controller; import com.jxust.personProperties; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.bind.annotation.requestmethod org.springframework.web.bind.annotation.restcontroller;/** * peng에 의해 생성 * 시간 : 2016/12/15 20:55 */ @restcontrollerpublic 클래스 hellocontroller {@autowired private personproperties personproperties; @requestmapping (value = "/hello", method = requestmethod.get) public String says () {return personProperties.getName ()+personProperTies.getAge (); }}구성 파일 application.yml 여러 구성 세트에 대해
IL8N 파일의 국제화와 유사하게, i18n_en_us.properties 및 i18n_zh_cn.properties
이것은 빈번한 구성 수정의 당황을 해결할 수 있습니다
사용할 구성 파일을 결정하려면 application.yml 구성 파일에 달려 있습니다.
application.yml
봄 : 프로파일 : 활성 : a
응용 프로그램 -A.YML
서버 : 포트 : 8081 Context-Path : /Springbootperson : 이름 : Xiaoleiage : 21
응용 프로그램 b.yml
서버 : 포트 : 8081 Context-Path : /SpringBootperson : 이름 : Xiaopang Age : 22
SpringBoot는 예제를 확인하기 위해 추가, 삭제 및 변경을 추가합니다
완전한 프로젝트 구조
컨트롤러 사용
컨트롤러 사용
@Controller Chu는 HTTP 요청을 처리합니다
@RestController SPRING4 이후 새 주석은 @ResponseBody가 @Controller와 협력해야한다는 것이 밝혀졌습니다.
@requestmapping 구성 URL 매핑을 구성합니다
휴식 스타일 요청
컨트롤러의 메소드에 대한 주석
@requestmapping (value = "/hello", method = requestmethod.get) @requestmapping (value = "/hello", method = requestmethod.post) @requestmapping (value = "/hello", method = requestmethod.delete) @requestmapping (value = "/hello", method = requestmethod.put).
SpringBoot는 위의 주석을 단순화합니다
@getMapping (value = "/girls") @postmapping (value = "/girls") @putMapping (value = "/girls/{id}") @deletempapp (value = "/girls/{id}")브라우저는 다양한 방식으로 요청을 보내야하며 HTTPrequester 플러그인을 설치할 수 있으며 Firefox 브라우저는이 구성 요소를 직접 검색하여 설치할 수 있습니다.
스프링-다타 -JPA
JPA 전체 이름 Java Persistence API.JPA는 JDK 5.0 주석 또는 XML을 통한 객체 관계 테이블의 매핑 관계를 설명하고 실행 중 엔터티 객체를 데이터베이스에 유지합니다.
Hibernate3.2+, Toplink 10.1.3 및 OpenJPA는 모두 JPA 구현을 제공합니다.
JPA를 사용하여 MySQL 데이터베이스를 만듭니다
pom.xml은 JPA 및 MySQL 종속성을 추가합니다
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> Spring-boot-starter-data-jpa </artifactid> </dependency> <groupid> mysql </groupId> <atifactid> mySQL-Connector-Java </arepifactid>
JPA 및 데이터베이스 구성
application.yml
스프링 : 프로파일 : Active : A Active : DataSource : Driver-Class-Name : com.mysql.jdbc.driver URL : jdbc : mysql : //127.0.0.1 : 3306/db_person 사용자 이름 : 루트 비밀번호 : 루트 JPA : Hibernate : DDL-Auto : Update Show-Shl : Update Show-SHLL : True
형식이 중요합니다
DB_Person 데이터베이스를 수동으로 만들어야합니다
데이터 테이블에 해당하는 사람 엔티티 클래스 생성
사람. 자바
package com.jxust.entity; import javax.persistence.entity; import javax.persistence.generatevalue; import javax.persistence.id;/** * peng * time : 2016/12/16 17:56 */ @enditypublic class person {@id @generatedvalue private insteger id; 개인 문자열 이름; 개인 정수 시대; // 생성자는 공용인 여야합니다 () {} public integer getId () {return id; } public void setId (정수 ID) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public integer getage () {return age; } public void setage (정수 시대) {this.age = age; }}프로젝트를 실행하면 데이터베이스를 확인하면 테이블 사람이 자동으로 생성됩니다.
mysql> db_person을 사용하십시오; database ChangedMysql> desc person;+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 널 | |+------------------------+---------+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
다음으로, 사람 테이블을 추가, 삭제, 수정 및 확인할 수 있습니다.
컨트롤러 personController.java를 만듭니다
먼저 DAO 패키지 아래에있는 인터페이스 인원 재구성을 만듭니다. PersonController는 데이터베이스와의 상호 작용을 달성하기 위해 jparepository에서 상속 된 메소드를 호출합니다.
이 Personrepository 인터페이스의 기능은 SSM 프레임 워크에서 DAO 계층의 인터페이스 함수와 유사합니다. SSM 프레임 워크에서 서비스 계층은이 인터페이스를 통해 mybatis 데이터베이스 매핑 파일 (.xml)에서 해당 SQL 문을 간접적으로 실행하고 데이터베이스를 추가, 삭제, 수정 및 검색하는 작업을 수행합니다. (Mapper는 DAO 인터페이스를 자동으로 구현합니다)
PersonRepository.java
package com.jxust.dao; import com.jxust.entity.person; import org.springframework.data.jpa.repository.jparepository; jparepository; jparepository; jparepository; jparepository; jparepository; jparepository;
PersonController.java
package com.jxust.controller; import com.jxust.dao.personrepository; import com.jxust.entity.person; import org.springframework.beans.beans.annotation.autowired; import org.spramframework.bind.annotation.getmapping; import org.springframework.web.bind.annotation.restcontroller; import java.util.list;/** * peng * time : 2016/12/16 18:04 */ @restControllerPublic Class PersonController {@autowired personrepositority; @getMapping (value = "/person") 개인 목록 <person> personList () {return personRepository.findall (); }}데이터베이스에 두 개의 데이터를 추가하십시오
mysql> select * from person;+---+-----+------+| id | 나이 | 이름 |+----+-------+-------+| 1 | 23 | 샬럿 || 2 | 21 | Ma Dongmei |+----+-------+-------+2 줄 (0.04 초)
프로젝트 실행 요청 http : // localhost : 8081/springboot/person
콘솔에서 출력 : SQL 문 :
Hibernate : person0_.id를 id1_0_, person0_.age as as age2_0_, person0_.name as person0_에서 선택하십시오.
추가, 삭제, 수정 및 점검을 추가하는 다른 방법
PersonController.java
..../** * 사람 추가 * * @param name * @param age * @return */@postmapping (value = "/person") 공개 사람 personadd (@requestparam ( "name") 문자열 이름, @requestparam ( "Age") 정수 에이지) {person perient = new person (); person.setName (이름); person.setage (나이); Return Personrepository.save (사람); }/** * 사람 쿼리 * * @param id * @return */@getMapping (value = "/person/{id}") 공개 사람 personfindone (@pathvariable ( "id") 정수 ID) {return personrepository.findone (id); }/** * 사람 삭제 * * @param id */@deletemapping (value = "/person/{id}") public void persondelete (@PathVariable ( "id") 정수 ID) {personRepository.delete (id); }/** * 사람을 업데이트 * * @param id * @param name * @param age * @return */@putmapping (value = "/person/{id}") public person personupdate (@pathvariable ( "id") 정수 ID, @requestparam ( "name") 문자열 이름, @requestparam ( "Age") {person = new person ()); person.setid (id); person.setName (이름); person.setage (나이); Return Personrepository.save (사람); }해당 요청 방법은 다음과 같습니다.
사용자 쿼리 :
사용자를 추가하십시오
사용자 삭제 (반환 값 없음)
사용자를 업데이트하십시오
그렇다면 나이에 따라 확인할 수 있습니까? 대답은 아직 불가능하다는 것입니다
콘솔 문서에서 SQL 문은 ID에 따라 쿼리된다는 것을 알 수 있습니다.
Hibernate : id1_0_0_, person0_.age로 person0_.id를 선택하십시오.
나이에 따른 쿼리
Personreepository findByage (정수 시대)에 메소드 추가
공개 인터페이스 개인 편견 확장 jparepository <person, integer> { / ** * query the Age * 메소드 이름 고정 된 findByage * @param age * @return * / public list <person> findByage (Integer Age);}PersonController에 해당 쿼리 메소드를 추가하십시오
..../** * AGE에 의한 쿼리 * @Param Age * @return */@getMapping (value = "/person/age/{age}") 공개 목록 <PersonListByage (@PhiseVariable ( "Age") 정수 시대) {Return PersonRepository.FindByage (Age); }요청 http : // localhost : 8081/springboot/person/age/23을 입력하여 23 세의 사람을 쿼리하십시오.
콘솔은 SQL 문을 출력합니다.
Hibernate : person0_.id, id1_0_, person0_.age로 person0_.id를 선택하십시오.
거래 관리
두 개의 SQL 문이 동시에 하나의 방법으로 실행됩니다. 하나의 SQL 명령문이 성공적으로 실행되고 다른 SQL 문이 실패하지 않도록하기 위해 거래 관리가 도입됩니다. 메소드를 추가하려면 @Transactional Transaction Annotation이 필요합니다.
트랜잭션은 데이터베이스 데이터의 무결성과 일관성을 보장합니다
personservice.java
PersonControll에서
package com.jxust.service; import com.jxust.dao.personrepository; import com.jxust.entity.person; import org.springframework.beans.beans.annotation.autowired; import org.springframework.stereapple.service; import javax.transaction.transactional;/ */ */hate by by/ */rected; 19:30 */ @servicepublic class personservice {@autowired private personrepository personrepository; / *** 트랜잭션 관리 테스트* 두 개의 데이터가 동시에 성공하거나 동시에 성공하지 못합니다* 데이터베이스 데이터의 무결성과 일관성을 보장*/ @Transactional Public void inserttwo () {persona = new Person (); persona.setname ( "Qiuya"); persona.setage (19); Personreepository.save (페르소나); System.out.print (1/0); 사람의 사람 = 새로운 사람 (); personb.setName ( "mengtejiao"); personb.setage (25); PersonRepository.save (Personb); }}ER에서 테스트
... @autowired 개인 personservice personservice; .../*** 트랜잭션 테스트*/@postmapping ( "/person/two") public void persontwo () {personservice.inserttwo (); }프로젝트를 다시 실행하고 요청 게시 방법 http : // localhost : 8081/springboot/person/two를 실행하십시오.
첫 번째 데이터가 데이터베이스에 추가되지 않았으므로 트랜잭션 관리가 있음을 나타냅니다.
Womplete PersonController.java, PersonRepository.java 및 pom.xml
PersonController.java
package com.jxust.controller; import com.jxust.dao.personrepository; import com.jxust.entity.person; import com.jxust.service.personservice; import org.springframework.beans.annotation.AntOUREATHEREATHEATHEATHEATHEATHEATHEATHEATHEATHEATHEATHEATHEANT.ANTORG.SpringFramework.bind.bind.annotation java.util.list;/** * peng에 의해 생성 * 시간 : 2016/12/16 18:04 */ @restControllerPublic Class PersonController {@autowired personrepository personrepository; @autowired 개인 personservice personservice; /** * 모든 직원 목록을 쿼리 * * @return */@getMapping (value = "/person") 개인 목록 <person> personList () {return personRepository.findall (); }/** * 사람 추가 * * @param name * @param age * @return */@postmapping (value = "/person") public person perferadd (@requestparam ( "name") 문자열 이름, @requestparam ( "age") inther person = new person (); person.setName (이름); person.setage (나이); Return Personrepository.save (사람); }/** * 사람 쿼리 * * @param id * @return */@getMapping (value = "/person/{id}") 공개 사람 personfindone (@pathvariable ( "id") 정수 ID) {return personrepository.findone (id); }/** * 사람 삭제 * * @param id */@deletemapping (value = "/person/{id}") public void persondelete (@PathVariable ( "id") 정수 ID) {personRepository.delete (id); }/** * 사람을 업데이트 * * @param id * @param name * @param age * @return */@putmapping (value = "/person/{id}") public person personupdate (@pathvariable ( "id") 정수 ID, @requestparam ( "name") 문자열 이름, @requestparam ( "Age") {person = new person ()); person.setid (id); person.setName (이름); person.setage (나이); Return Personrepository.save (사람); }/** * AGE에 의한 쿼리 * @Param Age * @return */@getMapping (value = "/person/age/{age}") 공개 목록 <PersonListByage (@PhiseVariable ( "Age") 정수 시대) {return personrepository.findByage (Age); }/*** 트랜잭션 테스트*/@postmapping ( "/person/two") public void persontwo () {personservice.inserttwo (); }}PersonRepository.java
package com.jxust.dao; import com.jxust.entity.person; import org.springframework.data.jpa.repository.jparepository; import java.util.list;/** * time : 2016/12/16 18:07 */public interface extens <perient <perippository> {intepository> {intepository> {intepository> {intepository> {intepositority <perforepository>/ * < Age * Method Name 고정 * @param age */ public list <person> findByage (Integer Age);}pom.xml
<? xml version = "1.0"encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.xsd"> <modeversion> 4.0.0 </modelversion> <groupid> com.jxust> <artifactid> sphorngbootdemo <버전> 0.0.1-snapShot </version> <packaging> jar </packaging> <name> spirngbootdemo </name> <description> 스프링 부츠를위한 데모 프로젝트 </descript> <perforid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid>. <RelativePath/> <!-리포지토리에서 부모를 조회합니다 .-> </parent> <properties> <proffice.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.worting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> 1.8. </properties> <pectionilency> <pectinement> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <groupid> org.springframework.boot </group-actid> springbboot </artifactid> <Scope> test </scope> </fectionency> <pectionement> <groupId> org.springframework.boot </groupId> <artifactid> spring-boot-configuration-processor </artifactid> <선택 사항> true </tepplital> <guplency> <groupid> <groupid> org.springframework.boot <아티 팩트> 스프링 부트 스타터-데이터 -jpa </artifactid> </dependency> <pectomency> <groupid> mysql </groupid> <artifactid> mysql-connector-java </aftifactid> </dependency> </dependency> </build> <plugin> <groupid> org.springframework.boot </groupid> <artifactid> Spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>
요약
위의 내용은 Intellij Idea Springboot 데이터베이스 추가, 삭제, 수정 및 편집기가 소개 한 검색 예제에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!