IDEA SpringBoot 오프라인 프로젝트 구축 방법

SpringBoot 의 구체 적 인 소 개 는 다른 인터넷 소 개 를 참조 할 수 있 습 니 다.여 기 는 더 이상 말 하지 않 겠 습 니 다.요 며칠 동안 의 학습,개인 적 인 이해,한 마디 로 하면: 
(1)스프링 의 업그레이드 버 전 입 니 다.스프링 용기 가 할 수 있 는 일 은 모두 할 수 있 고 더욱 간편 합 니 다.설정 형식 으로 볼 때 스프링 부 트 는 번 거 로 운 XML 파일 설정 방식 을 완전히 버 리 고 대체 적 으로 주해 방식 으로 이 루어 집 니 다.본질 적 으로 차이 가 많 지 않 지만(가방 스 캔,주해 스 캔,클래스 로드 등). 
(2)SpringBoot 는 통 합 된 플러그 인 이 더 많아 서 많은 서 비 스 를 사용 합 니 다.모두 하나의 의존 도 를 도입 할 뿐 몇 개의 주석 과 자바 류 를 사용 할 수 있 습 니 다.구체 적 으로 관련 매 뉴 얼 을 참고 할 수 있 습 니 다. 
(3)웹 애플 리 케 이 션 에서 이 블록 을 개발 합 니 다.기 존의 애플 리 케 이 션 은 일반적으로 war 패키지 로 포장 한 다음 에 관련 서버 용기 에 발표 합 니 다(예 를 들 어 Tomcat).SpringBoot 도 이렇게 할 수 있 지만 SpringBoot 에서 더 흔히 볼 수 있 는 형식 은 SpringBoot 애플 리 케 이 션 을 실행 가능 한 jar 패키지 파일 로 포장 하 는 것 입 니 다.이렇게 하 는 이 유 는 스프링 부 트 애플 리 케 이 션 을 자바 애플 리 케 이 션 으로 직접 볼 수 있 기 때 문 입 니 다.웹 애플 리 케 이 션 은 웹 앱 디 렉 터 리(웹.xml 은 말 할 것 도 없 이)가 없 을 수 있 습 니 다.html 페이지 를 추천 하고 정적 자원 으로 사용 합 니 다. 
다음은 IDEA 에서 0 부터 SpringBoot Web 애플 리 케 이 션 을 구축 하 는 방법 을 구체 적 으로 기록 하 겠 습 니 다.여 기 는 Maven 을 의존 관리 로 하고 초보 자 들 이 시작 하 는 것 입 니 다.궁금 한 점 이 있 으 시 면 참고 하 시기 바 랍 니 다SpringBoot 홈 페이지 
스프링 부 트 가 의존 하 는 JDK 버 전이 1.8 이상 이라는 점 을 설명해 야 한다. 
(1)File->new,maven 을 선택 하여 빈 항목 을 만 들 고 바로 다음. 

(2)공사 명 작성 
 
(3)next 는 끝까지 Maven 기반 의 빈 자바 프로젝트 를 만 들 었 습 니 다.디 렉 터 리 구 조 는 다음 과 같 습 니 다. 
 
(4)pom 파일 에 SpringBoot 관련 의존 도 를 도입 합 니 다.

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.1.RELEASE</version>
</parent>
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>
(5)모든 contrller 를 저장 하 는 데 사용 되 는 contrller 패 키 지 를 새로 만 듭 니 다.여 기 는 공식 적 인 것 과 마찬가지 로 SampleController 를 첫 번 째 테스트 사례 로 사용 합 니 다.코드 는 다음 과 같 습 니 다:

/**
 * Created by Song on 2017/2/15.
 *             
 */
@Controller
@EnableAutoConfiguration
public class SampleController {
  @RequestMapping("/")
  @ResponseBody
  String home() {
    return "Hello World!";
  }
 
  public static void main(String[] args) throws Exception {
    SpringApplication.run(SampleController.class, args);
  }
}
여기 main 함수 가 있 습 니 다.앞에서 말 한 것 을 연상 시 키 면 SpringBoot 응용 프로그램 은 보통 실행 가능 한 jar 패키지 로 포장 하여 발표 합 니 다.이 main 함 수 는 전체 프로젝트 의 입구 입 니 다.이렇게 할 수 있 는 이 유 는 SpringBoot 가 Tomcat 8 을 하나의 플러그 인 으로 통합 시 켰 기 때문에 이전의 SSM 구조 와 마찬가지 로 Tomcat 에 war 가방 을 설정 해 야 실행 할 수 있 습 니 다.이 main 함수 실행 을 직접 클릭 하고 브 라 우 저 링크 표시 줄 에 주 소 를 입력 하 십시오.http://localhost:8080/"Hello World!"됐어.이것 이 바로 홈 페이지 가 제공 하 는 가장 기본 적 인 SpringBoot 기반 웹 애플 리 케 이 션 으로 이렇게 편리 하 다. 
물론 기본 적 인 웹 애플 리 케 이 션 은 구조 가 쉽 지 않 을 것 이다.다음은 위 를 바탕 으로 MVC 구 조 를 가 진 완전한 웹 응용 을 구축 하 는 방법 입 니 다.그 중에서 데이터 베 이 스 는 Mysql 을 사용 하고 ORM 은 Spring Data JPA 를 사용 하 며 전단 페이지 는 js+html 5 를 사용 합 니 다.(물론 다른 방식 도 있다.예 를 들 어 ORM 프레임 워 크 는 my batis 등 을 사용 하고 본 고 는 아직 언급 되 지 않 았 다.) 
(6)resource 디 렉 터 리 에 application.properties 파일(또는 yml 파일)을 새로 만 듭 니 다.이름과 위 치 는 SpringBoot 의 기본 설정 파일 입 니 다.이 파일 에는 모든 모듈 설정 내용 이 기록 되 어 있 습 니 다.예 를 들 어 Tomcat 의 포트(기본 8080)와 인 코딩 방식 등:

server.port=8080
server.tomcat.uri-encoding=utf-8
(7)본 프로젝트 에 필요 한 의존 도 를 도입 합 니 다(MySQL 연결 드라이버 및 Spring Data JPA,thymeleaf 템 플 릿 엔진)

 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.39</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
      <version>1.4.0.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
      <version>1.5.1.RELEASE</version>
    </dependency>
(8)application.properties 에 MySQL 데이터베이스 연결 정 보 를 설정 합 니 다. 
이 데이터 베 이 스 는 로 컬 데이터베이스 test 로 사용자 이름과 비밀 번 호 를 자신의 것 으로 바 꿉 니 다.

#MySQL
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
spring.datasource.username=****
spring.datasource.password=****
(9)application.properties 에 Spring Data JPA 설정 
이 단락 은 데이터베이스 유형 이 MYSQL 이 고 로그 정 보 는 구체 적 으로 실 행 된 sql 문 구 를 인쇄 하 며 표 업데이트 전략 과 자바 류 에서 데이터베이스 표 필드 까지 의 맵 규칙 등 으로 네트워크 자 료 를 구체 적 으로 보 는 것 을 의미한다.

#Spring Data JPA
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
(10)실체 클래스 User 작성 
@Table 탭,데이터베이스 에 대응 하 는 표 이름 을 지정 합 니 다.id 는 메 인 키 로 설정 되 어 있 으 며,생 성 정책 은 자동 으로 생 성 됩 니 다.

/**
 * Created by Song on 2017/2/15.
 * Model   
 */
@Entity
@Table(name = "tbl_user")
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private long id;
 
  private String name;
 
  private String password;
}
(11)JPA 를 기반 으로 DAO 층(즉,데이터베이스 데이터 의 삭제 및 수정 작업)을 실현 합 니 다. 
새 UserRepositoty.java 인터페이스 파일 입 니 다.원본 코드 는 다음 과 같 습 니 다.

/**
 * Created by Song on 2017/2/15.
 * User     
 */
@Repository
public interface UserRepositoty extends JpaRepository<User,Long>{
 
  @Query("select t from User t where t.name = :name")
  User findByUserName(@Param("name") String name);
}
설명 이 필요 한 것 은 Spring Data JPA 는 Repository,CrudRepositoty,Paging AndSorting Repository,JpaRepository 인 터 페 이 스 를 제공 합 니 다.그 중에서 Repository 는 기본 클래스 이 고 JpaRepository 는 Paging AndSorting Repository 인터페이스 에서 계승 되 며 두 개의 일반적인 매개 변 수 는 각각 자바 POJO 류 와 메 인 키 데이터 형식 을 대표 합 니 다.저희 가 데이터베이스 조작 인 터 페 이 스 를 만 들 때 상기 JPA 가 제공 한 인 터 페 이 스 를 계승 하면 관련 데이터 조작 방법 을 자동 으로 계승 할 수 있 습 니 다.다시 실현 할 필요 가 없습니다.예 를 들 어 CrudRepositoty 는 첨삭 검사 작업 의 실현 을 제 공 했 고 Paging AndSorting Repository 는 페이지 별 조회 방법 을 제공 했다.또한 JPA 는 readby**()등 명명 규칙 을 제공 하 였 으 며,이러한 방법 도 사용자 가 설명 하기 만 하면 JPA 에서 자동 으로 실 현 됩 니 다.만약 에 이것 이 업무 수 요 를 만족 시 키 지 못 한다 면 SQL 조회 문 구 를 사용자 정의 할 수 있 습 니 다.예 를 들 어 상기 코드 에서 보 듯 이@Query 라벨 을 사용 할 수 있 습 니 다.그 중에서*문법 은 아래 에@Param 표 지 를 사용 하 는 변 수 를 참조 하 는 것 입 니 다.주의해 야 할 것 은 그 중에서 User 는 표면 이 아니 라 자바 POJO 유형 입 니 다.구체 적 인 사용 은 JPA 사용 매 뉴 얼 을 참고 하 세 요. 
(12)디자인 서비스 계층 업무 코드 
새 UserService 클래스 의 원본 코드 는 다음 과 같 습 니 다.

/**
 * Created by Song on 2017/2/15.
 * User    
 */
@Service
public class UserService {
  @Autowired
  private UserRepositoty userRepositoty;
 
  public User findUserByName(String name){
    User user = null;
    try{
      user = userRepositoty.findByUserName(name);
    }catch (Exception e){}
    return user;
  }
}
(13)디자인 컨트롤 러 층 
새 UserController.자바,두 개의 인 터 페 이 스 를 제공 합 니 다./user/index 는 페이지 로 돌아 가 고/user/show 는 데 이 터 를 되 돌려 줍 니 다.그 소스 코드 는 다음 과 같다.

/**
 * Created by Song on 2017/2/15.
 * User   
 */
@Controller
@RequestMapping(value = "/user")
public class UserController {
  @Autowired
  private UserService userService;
 
  @RequestMapping(value = "/index")
  public String index(){
    return "user/index";
  }
 
  @RequestMapping(value = "/show")
  @ResponseBody
  public String show(@RequestParam(value = "name")String name){
    User user = userService.findUserByName(name);
    if(null != user)
      return user.getId()+"/"+user.getName()+"/"+user.getPassword();
    else return "null";
  }
}
(14)application.properties 파일 에 페이지 엔진 을 설정 합 니 다.여 기 는 SpringMVC(SpringBoot 는 thymeleaf,freemaker 등 도 제공 합 니 다)를 사용 합 니 다.정적 자원(js,css 파일,이미지 파일 등)경로 와 html 페이지 파일 경 로 를 설정 하고 SpringMVC 가 Spring 에서 설정 한 것 을 참고 해 야 합 니 다.

#     
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html
spring.mvc.static-path-pattern=/static/**
(15)resource 디 렉 터 리 에 templates 와 static 디 렉 터 리 를 새로 만 들 고 html 파일 과(js,css 파일,그림)파일 을 저장 하 는 데 사용 합 니 다.(13)에서'user/index'페이지 를 되 돌려 주 었 기 때문에 templates 에서 user 디 렉 터 리 를 새로 만 들 고 user 디 렉 터 리 에서 index.html 페이지 를 새로 만 들 었 습 니 다.여 기 는 아무것도 쓰 지 않 습 니 다.기본 페이지 는 상대 적 인 경 로 를 통 해 js 파일 을 도입 합 니 다.js 파일 에 서 는 표시 만 하고 alert()를 팝 업 합 니 다. 
user/index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <script src="../static/scripts/jquery.min.js"></script>
  <script src="../static/scripts/test.js"></script>
  <title>Title</title>
 
</head>
  <h1>TEST PAGE</h1>
<body>
 
</body>
</html>
static/scripts/test.js

$(document).ready(function (){
  alert("OK TEST");
});
(16)JPA 설정 
프로젝트 설정 클래스 를 저장 하기 위해 configuration 패 키 지 를 새로 만 듭 니 다.SSM 구조 와 같이 spring 은 자바 POJO 패키지 경로 와 DAO 층 인터페이스 경 로 를 설정 하여 관련 주 해 를 자동 으로 검색 해 야 합 니 다.여기 서도 이 두 가 지 를 설정 해 야 합 니 다.다른 것 은 Spring 이 xml 설정 방식 을 사용 하 는 것 입 니 다.여 기 는 자바 코드+주석 방식 으로 설정 합 니 다.Jpa Configuration.java 클래스 를 새로 만 듭 니 다.코드 는 다음 과 같 습 니 다.

/**
 * Created by Song on 2017/2/15.
 * JPA    
 */
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "com.song.repository")
@EntityScan(basePackages = "com.song.entity")
public class JpaConfiguration {
  @Bean
  PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
    return new PersistenceExceptionTranslationPostProcessor();
  }
}
(17)프로젝트 시작 입구 설정 
이 단계 에 이 르 면(5)공식 예제 에서 제시 한 SampleController.자바 를 삭제 할 수 있 습 니 다.우리 의 프로젝트 구조 가 바 뀌 었 기 때문에 SpringBoot 프레임 워 크 에 어떤 가방 을 스 캔 하여 해당 하 는 종 류 를 불 러 올 지 알려 야 하기 때문에 main 함 수 를 다시 작성 합 니 다.Entry.java 클래스 를 새로 만 듭 니 다.코드 는 다음 과 같 습 니 다.(그 중에서@SpringBootApplication 은 복합 주석 이 므 로 자동 설정 으로 이해 하 십시오)

/**
 * Created by Song on 2017/2/15.
 *       ,      
 */
@SpringBootApplication
@ComponentScan(basePackages = "com.song")
public class Entry {
  public static void main(String[] args) throws Exception {
    SpringApplication.run(Entry.class, args);
  }
}
(18)주 함수 실행,접근http://localhost:8080/user/index 테스트 페이지 를 표시 하고 alert()를 팝 업 하여 접근 합 니 다.http://localhost:8080/user/show?name=**(데이터 시트 에 존재 하 는 데이터)는 user 정 보 를 표시 합 니 다.최종 프로젝트 파일 구 조 는 다음 과 같 습 니 다. 
 
전체 프로젝트 프로젝트:https://github.com/Sonlan/springboot-demo
IDEA 가 SpringBoot 오프라인 프로젝트 를 구축 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 IDEA 가 SpringBoot 오프라인 프로젝트 를 구축 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기