날아라쩡글이의 블로그입니다.

springboot사용, 설정하기 본문

중앙 HTA (2106기) story/spring java framwork story

springboot사용, 설정하기

날아라쩡글이 2022. 1. 13. 16:24
반응형

vue은 main.js에서 app과 router을 연결하고, 데이터를 뿌리는 것은 spring Boot에서 Rest방식으로 가져올 수 있다.
SpringBoot는 운영환경에서도 사용가능한 프로토타입으로 프로젝트를 만들 수 있는 것이다. 

  • 실행가능한 파일을 빨리 만드는 것이다. 
  • 설정을 최소화하고 의존성라이브러리를 적는 것이 아닌 spring boot에서 UI인 체크박스로 적용한다. 
  • spring은 설정파일이 존재하지 않고, 항상 정해진 이름이 있다. 
    • 임의로 정해지고, 이름을 알려줄 필요가 없다. 
    • COC라는 방식으로 개발을 한다. 
      • 설정 보단 관례
    • spring Application은 빠르게 움직인다. 
  1. 먼저 lombok.jar를 다운받는다. 
  2. Location에서 전자정부프레임워크에서 eclipse를 선택하고 install을 한다. 
  3. 그럼 lombok이 같은 파일이 존재하고, aboutEclips IDE에 lombok이 추가 되어있다. 
  4. new ->project -> spring start를 설치한다. 
  5. war ->jsp를 사용하려면 이 설정으로 해야한다. 우리는 현재 vue로 진행예정으로 jar을 설치할 것이다.
  6. groupid를 적고 이용할 주소를 적고 
  7. web ->springweb
  8. mybatis ->mybatis framework
  9. oracle ->oracleDriver
  10. lombok
  11. devto ->spring Boot DevTools
  12. 을 클릭하고 완료를 눌러준다. 
  • 설정방법
  1. application.properties
    - context-root와 context-web.xml의 역활을 수행한다. 
    - key:value의 형태로 작성한다.
  2. application.properties에 logger와 port번호, connectionPool을 설정한다. 
    -#loggin level
    logging.level.root=INFO
    -#webserver port number
    server.port=8081
    -#connectionPool
    spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
    spring.datasource.url=jdbc:oracle:thin:@LAPTOP-MP9I3VRU:1521:xe
    spring.datasource.username=hr
    spring.datasource.password=zxcv1234
  3. 이제 xml은 필요없고, 자바코드로 환경설정을 대신한다. 
  4. 폴더 설명 
    1. src/main/java - springbootBookstore Application : 메소드로 하위패키지를 읽어들여서 다시 시작하게 한다.
    2. static : 정적리소스가 들어간다. css/js/img
    3. template : jsp외의 다른 웹 기술/페이지가 들어간다. 
      1. jsp는 다른 설정이 필요하다. war로 작업해야한다.
      2. 타임리프트 템플릿엔진이 들어간다.
    4.  springbootBookstore Application의 어노테이션을 확인한다. 
      1. 자동으로 생긴 객체와 메소드가 들어있다. 
      2. @SpringBootApplication 어노테이션이 부착되어있다. 
        1. @SpringBootConfiguration
          1. @Configuration이 부착되어있다. 자바클래스가 환경설정파일이 된다.
        2. @EnableAutoConfiguration
          1. 스프링부트에서 프로젝트에서 포함해놓은 라이브러리인지 확인하고 설정정보를 읽고 핵심객체를 알아서 빈으로 등록한다. 
        3. @ComponentScan
          1. 클래스에 위치한 패키지 및 하위클래스를 스프링의 빈으로 등록한다 
          2. 여기외에 위치한 파일은 서버에 올릴 수 없다. 
        4. Configuration이 붙여있다면 설정정보를 확인해서 특정라이브러리가 있는지 확인한다. 
        5. java로 변경하면 BootDashBoard가 존재하는 것을 확인할 수 있다. 
        6. pom.xml에 가서 확인을 하면
          <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.6.2</version>
          <relativePath/> <!-- lookup parent from repository -->
          </parent>가 있는 것을 확인할 수 있다. 
          1. web에 필요한 라이브러리가 전부 추가되고, 그룹을 지어놓았기 때문에 spring-boot로 모든 아키텍쳐id가 적힌 것을 알 수 있다. 
          2. 추가로 등록시 우측마우스를 누르고, spring ->addspring을 누르면 추가 데이터를 넣을 수 있다. 
          3. dependency를 추가할 경우 설정없이 사용이 가능하다.
        7. DAO를 설정한다. 
        8. bookstore패키지 안에 mapper패키지를 추가하고, BookMapper라는 아이디로 입력해준다. 
          1. @Mapper인 어노테이션을 등록한다. 
        9. springbootBookstroreAppliction에 mapper링크를 걸어준다. 
          1. @MapperScan(basePackages =  "com.sample.bookstore.web.mapper")으로 mapper경로를 읽어와서 mapper로 등록한다는 의미이다. 
        10. mapper-config과 mapper파일을 설정하자. 
          1. resource에 mybatis 파일을 설정한다. 
          2. mybatis에 mapper-config파일을 설정한다
            1. settings를 태그를 연다.
            2. setting태그에 name과 value로 작성한다.  
            3. mybatis를 이용해서 실행하는 작업인 log4j2를 등록한다. 
              1. <setting name="logImpl" value="LOG4J2"/>
            4. null값이 허용된 컬럼에 null값을 입력할 때 컬럼타입에 상관없이 입력하는 null을 작성한다. 
              1. <setting name="jdbcTypeForNull" value="NULL"/> 
          3. 그리고 mapper파일을 안에 하나 더 작성한다. 
          4. 그리고 안에 BookMapper로 DAO와 동일한 이름을 작성한다. 
            1. Dao로 select와 resultType을 설정한다. 
          5. application.properties에 경로를 등록한다. 
            1. #mybatis mybatis의 설정파일을 지정한다.
              mybatis.config-location=classpath:/mybatis/mybatis-config.xml //config을 등록한다.
              mybatis.mapper-locations=mybatis/mappers/*xml //mapper전체를 등록한다. 
          6. vo객체를 입력한다. 
            1. vo의 private를 작성한다. 
            2. lombok에서 등록한 어노테이션을 사용할 예정이다. 
            3. @Getter //getter
            4. @Setter //setter
            5. @NoArgsConstructor //매개변수가 없는 생성자
            6. @AllArgsConstructor //모든 매개변수를 reset하는 생성자
            7. @ToString  //재정의
            8. @Builder //빌드패턴 
              1. 모든 매개변수를 reset하는 생성자와 함께 사용이 가능하다. 
              2. @Builder
                public Book(int no, Sting title) {
                this.no = no;
                this.title = title;
                } //모든매개변수를 reset하는 생성자 위에 작성할 수 있다.
              3. Builder패턴이랑 각각의 값을 초기화하는 메소드로 생성자를 여러개 만들 필요가 없게 만들어주는 생성자이다. 매개변수가 8개라면 경우의 수가 많다. 
              4. Builde패턴은 생성자가 상관없이 만들어주는 방법이다. 
            9. Service 패키지를 생성한다. 
              1. @Service 어노테이션을 단다. 
              2. @Autowired로 Dao를 담는다. 
                1. @Autowired
                  private BookMapper bookmapper;
              3. 그리고 메소드를 작성한다. 
            10. Controller를 작성한다. JSON으로 화면을 보낼 수 있게 
              1. @RestController를 작성해준다 JSON으로 응답을 보낼것이기 때문
              2. @RequestMapping("/api/book")
                //api/book이라는 경로가 넘어오면 보내주는 mapping을 진행한다. 
              3. @AutoWired로 Service를 연결한다. 
              4. @GetMapping으로 보낼 메소드를 적어준다. 
              5. @CrossOrigin으로 승인 요청이 되는 주소를 적어준다.
                (origins = "*") || (origins = "http://localhost:8080")으로 
            11. @SpringbootBookstoreApplication인 메소드를 실행하는 것이다. 
            12. 어노테이션을 이용해서 환경설정을 맞추고, mabatis는 mapperinterface를 스캔한다. 
            13. 나중에 필요하면 이 페이지에서 bean으로 등록할 수 있다
            14. @Bean
              public BookService getBookService() {
              return new BookService(); 
               //이렇게 메소드로 호출하는 빈으로 등록가능하다 xml을 따로 만들지 않고 이렇게 설정하자 라는 것이다.
              }
            15. 빈으로 등록이 되었다. 
            16. spring boot는 URL로 접근시 책정보를 전달해준다. openAPI로 작용된다. 
반응형

'중앙 HTA (2106기) story > spring java framwork story' 카테고리의 다른 글

springboot insert시키기  (0) 2022.01.16
vue.js와 springboot AJAX로 전송하기  (0) 2022.01.14
AOP만들기  (0) 2022.01.12
AOP(Aspect Oriented Programming)  (0) 2022.01.11
트랜잭션 @transactional  (0) 2022.01.11
Comments