이전 기사를 소개 한 후, 나는 내 친구들이 더 이상 도움이 될 수 없지만 SpringBoot를 갈망 할 수 있다고 생각합니다. 이 기사에서는 SpringBoot 구성 파일의 구성을 친구에게 계속 소개합니다. 글로벌 구성 매개 변수를 사용하는 방법. 자, 오늘의 콘텐츠 소개를 시작합시다.
Spring Boot는 컨테이너의 자동 구성을 지원하고 기본값은 Tomcat입니다. 물론 우리는이를 수정할 수 있습니다.
1. 첫째, 우리는 스프링 부트 스타터 -Web 의존성에서 Tomcat을 제외합니다 : POM 파일에서 Tomcat의 스타터 제외
<pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링-부트-스타터-web </artifactid> <exclusions> <exclusion> <groupid> org.springframework.boot </groupid> </inpopactid> </interifactid>
2. 부두 용기에 추가하십시오
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> 스프링 부트 스타터-예티 </artifactid> </fectionency>
이런 식으로 스프링 부츠 컨테이너는 부두 컨테이너로 수정됩니다.
디버깅을 용이하게하려면 여기에 HTTP 디버깅 도구가 있습니다 : Postman
SpringBoot의 글로벌 구성 파일에 대해 이야기 해 봅시다 : Application.Properties
개발 중에는 컨테이너 액세스 포트를 수정하기위한 그러한 요구 사항을 만나야합니다. SpringBoot는 기본적으로 컨테이너를로드하므로 포트 설정은 물론 구성 파일을 통해 제어됩니다. 이는 매우 편리합니다. 구성 파일에만 추가하면됩니다.
Server.port = 6666
이러한 방식으로 컨테이너 포트는 6666으로 수정됩니다.
구성 파일을 통해 프로젝트 액세스 별명을 설정할 수도 있습니다.
server.context-path =/springboot1
이런 식으로 프로젝트를 시작하고 http : // localhost : 6666/springboot1을 통해 프로젝트에 액세스 할 수 있습니다.
위의 것은 SpringBoot 구성 파일 구성의 빙산의 끝 일뿐입니다. 예를 들어, 데이터베이스 연결 구성을 설정하고 개발 환경 구성을 설정하고 환경 구성을 배포하며 둘 사이의 원활한 전환을 달성 할 수도 있습니다.
SpringBoot 컨트롤러 사용에 대해 알아 보겠습니다. SpringBoot는 세 가지 주석을 제공합니다.
이전 기사에서는 @RestController를 사용했습니다. 함께 @controller를 사용해 보겠습니다.
@Controller // @responseBodyPublic Class RequestTest {/*** 요청 메소드에 대한 제한 없음* @return*/@requestmapping (value = "/req") public String req () {return "success"; }}http : // localhost : 8080/springboot1/req를 입력하면 브라우저에 입력하면 404가 있습니다.
{ "timestamp": 1515332935215, "상태": 404, "오류": "메시지 없음", "경로": "/springboot1/req"}이게 왜? @Controller가 템플릿과 함께 사용해야하므로 Maven POM 파일을 열고 SpringBoot의 템플릿을 추가하기 때문입니다.
<!-SpringBoot 템플릿-> <pectionency> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-thymeleaf </artifactid> </dependency>
그런 다음 프로젝트의 리소스 디렉토리에서 템플릿을 찾으십시오 (그렇지 않은 경우 새 템플릿을 작성하십시오. 그러나 폴더 이름이 일관성이 있어야한다는 점에 유의하십시오), 성공을 만들어 프로젝트를 다시 시작하고 지금 주소에 액세스 할 수 있도록 성공적입니까?
그러나 여기서는 현재 엔터프라이즈 수준 개발이 전면 및 후면에서 분리되어 있음에 주목해야합니다. 백엔드 서비스를 할 때 해당 데이터 만 반환하면됩니다. 물론 템플릿을 사용하는 데 또 다른 단점이 있습니다. 즉, 성능은 특정 손실을 유발할 것이므로 모든 사람이 여기에서 간단히 이해할 수 있습니다.
위의 소개에서 언급했듯이 @controller+ @responsebody는 @RestController와 동일하므로 여기에서 @RestController를 사용하는 것이 좋습니다.
@requestmapping (value = "/req")을 소개하겠습니다. 나는 모든 사람들이 이미 그 사용법을 알고 있다고 생각합니다. 물론,이 주석은 방법에 사용될뿐만 아니라 클래스에도 적용됩니다.
@RestController //@controller //@responsebody@requestMapping (value = "/test") 공개 클래스 요청 테스트 {/*** 요청 메소드에 대한 제한 없음* @return*/@requestmapping (value = "/req") public String req () {return "success"; }/** * 제한된 요청 메소드는 get * @return */@requestmapping (value = "/req1", method = requestod.get) public string req1 () {return "success"; }/** * 제한 요청 메소드는 post * @return */@requestmapping (value = "/req2", method = requestmethod.post) public String req2 () {return "success"; }}이 방법을 볼 때 이미 유용성을 알고 있어야한다고 생각합니다. 지정된 액세스 유형이며 기본값을 설정하지 않고 어떤 식 으로든 액세스 할 수 있습니다. 메소드가 @requestmapping 클래스에 설정되면 클래스의 메소드가 기본적으로 상속 될 것이라고 생각했는지 모르겠습니다. 물론 메소드에서 별도로 설정할 수도 있습니다. 우선 순위 문제를 직접 시도하십시오.
아래는 컨트롤러의 구성 파일에서 상수에 액세스하는 방법을 소개합니다. 먼저 구성 파일을 추가합니다.
이름 = hpugsage = 35content = 이름 : $ {name}; age : $ {age}우리는 $ {}에 의해 사용되는 구성 파일에 상수를 사용합니다.
아래는 컨트롤러에 매개 변수를 주입합니다.
// 구성 파일에서 매개 변수를 인젝션 @Value ( "$ {name}") 개인 문자열 이름; @Value ( "$ {age}") 개인 정수 시대; @Value ( "$ {content}") 개인 문자열 내용; @requestmapping (value = "/req3", method = requestmethod.get) public String req3 () {return "name =" + name; } @requestmapping (value = "/req4", method = requestMethod.get) public String req4 () {return "age =" + age; } @requestmapping (value = "/req5", method = requestMethod.get) public String req5 () {return "content =" + content; }프로젝트를 시작하고 방문하십시오.
이 용도에 만족하지 않으면 다음은 또 다른 요령입니다. 클래스 매핑 구성 파일을 사용하고 클래스를 사용하여 매개 변수를 사용합니다. 단일 매개 변수를 주입하는 것이 더 편리합니다. 먼저 Java 클래스를 만듭니다
@component@configurationProperties (prefix = "userInfo") public class userInfo {개인 문자열 이름; 개인 정수 시대; 개인 문자열 내용; 공개 정수 getage () {return age; } public String getNames () {return names; } public void setNames (문자열 이름) {this.names = 이름; } public void setage (정수 시대) {this.age = age; } public String getContent () {return 컨텐츠; } public void setContent (문자열 내용) {this.content = content; }}그런 다음 구성 파일에서 매개 변수를 설정합니다.
userInfo.names = Little Broken Child userInfo.age = 25userInfo.content = 이름 : $ {userInfo.names}; age : $ {userInfo.age}컨트롤러를 만들기위한 배선 :
// 개체를 주입합니다 @autowired private userInfo userInfo; @requestmapping (value = "/req6", method = requestmethod.get, produces = "text/plain; charset = utf-8") public String req6 () {return "name =" + userInfo.getNames (); } @requestmapping (value = "/req7", method = requestMethod.get) public String req7 () {return "age =" + userInfo.getage (); } @requestmapping (value = "/req7", method = requestMethod.get) public String req7 () {return "age =" + userInfo.getage (); } @requestMapping (value = "/req8", method = requestMethod.get) public String req8 () {return "content =" + userInfo.getContent (); }자, 프로젝트 방문을 다시 시작하십시오.
친구,이 문제에 직면했는지 모르십니까? 중국어 코드가 있습니다. 우선 걱정하지 마십시오. 다른 SpringBoot 구성 파일 인 Application.yml을 살펴 보겠습니다. 이 구성 파일을 대체합니다 ";" Newline Spaces에 의해. YML에서 동일한 구성이 어떻게 구성되는지 살펴 보겠습니다.
서버 : 8888 Context-Path : /SpringBoot1name : HPUGSAGE : 35Content : 이름 : $ {name}; Age : $ {age} userInfo : name : little chid age : 25 내용 : 이름 : $ {userInfo.names}; Age : $ {userInfo.age}이제 프로젝트를 시작하고 시도해 봅시다.
위의 멍청한 질문으로 돌아가서 YML을 사용할 때는 갈망이 없습니까? 당신은 조금 우울합니까? 이게 왜? .properties 파일이 유니 코드 인코딩 양식을 사용하기 때문에 중국어로 들어갈 때 차량 코드가 나타납니다. 물론, 차량의 코드에 대한 또 다른 이유, 즉 프론트 엔드와 일치하지 않을 수있는 인코딩 설정이 있습니다. 구성 파일에 이것을 추가합니다.
스프링 : http : 인코딩 : 힘 : True Charset : UTF-8 활성화 : trueserver : tomcat : uri-encoding : utf-8
제어합니다. 다음은 몇 가지 개발 팁입니다. SpringBoot는 다양한 개발 환경에서 다양한 구성 파일에 대한 솔루션을 제공합니다.
#YML 형식 스프링 : 프로파일 : active : prod#.properties format spring.profiles.Active = dev
요약
위는 당신에게 소개 된 Springboot 함정의 Springboot 함정을 사용하는 것입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!