웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인하기 (https://noobnim.tistory.com/47?category=847081) 에 이어서 진행합니다.

 

웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기

웹개발 환경 세팅 - 3. Spring Boot 적용하기 (https://noobnim.tistory.com/44?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 3. Spring Boot 적용하기 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기..

noobnim.tistory.com

 

1. yml 적용하기

 

저는 프로젝트에 yml 을 이용하여 DB를 연동하기로 했습니다.

 

프로젝트에서 build.gradle을 열도록 합니다.

 

dependencies {
    ...
    compile("org.mariadb.jdbc:mariadb-java-client")
    ...
}

dependencies 에 위와 같이 mariadb jdbc를 추가합니다.

 

processResources {
    filesMatching("**/application.yml") {
        expand(project.properties)
    }
}

기본으로 생성되는 src/main/resources의 아래에 application.yml 를 추가하여 사용하기 위한 세팅을 합니다.

 

 

src/main/resources 에 application.yml 을 생성합니다.

 

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver    # mariadb의 jdbc 드라이버
    username: 디비 ID		  # 데이터베이스 사용자 ID
    password: 비밀번호		# 데이터베이스 사용자 비밀번호
    url: jdbc:mariadb://localhost:3306/디비명		# 데이터베이스 url

application.yml 에 위와 같이 디비연결의 기본적인 세팅을 합니다.

 

디비연동은 위와같이 간단하게 마무리됩니다.

다음 포스팅에 이어서 querydsl 을 적용하여 기본적인 테스트를 진행하도록 하겠습니다.

웹개발 환경 세팅 - 3. Spring Boot 적용하기 (https://noobnim.tistory.com/44?category=847081) 에 이어서 진행합니다.

 

웹개발 환경 세팅 - 3. Spring Boot 적용하기

웹개발 환경 세팅 - 2. 웹프로젝트 생성하기(https://noobnim.tistory.com/20?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기 웹개발 환경 세팅 - 1.Intellij Community 설치..

noobnim.tistory.com

 

 

저의 개인적인 개발용 데이터베이스로 MriaDB를 설치해보도록 하겠습니다.

 

 

1. MariaDB 설치하기

 

https://downloads.mariadb.org/

 

Downloads - MariaDB

 

downloads.mariadb.org

위의 다운로드 URL로 이동합니다.

 

 

Download 10.4.8 Stable Now! 를 클릭하여 이동합니다.

 

 

자신의 운영체제에 맞는 버전을 다운받도록 합니다.

저는 windows 환경으로 다운로드 받았으며, 클릭하고 잠시후면 다운로드가 진행됩니다.

 

 

다운로드가 완료되면 mariadb-10.4.8-winx64 파일을 더블클릭하여 실행합니다.

 

 

저는 이미 설치를 해버려서 설치프로그램 캡쳐는 https://offbyone.tistory.com/199 해당 링크를 참고로 합니다.

 

 

Next 를 클릭하여 진행합니다.

 

 

라이센스 동의여부에 체크를 한 후 Next클릭으로 진행합니다.

 

 

설치 위치 지정부분 입니다. 기본으로 두면 C:\Program Files\MariaDB 10.4 경로에 설치됩니다.

 

 

root계정의 비밀번호를 입력하는 부분입니다.

- 중간의 Enable access from remote machines for 'root' user 는 외부에서 root계정으로 접속을 허용하겠다는 체크입니다. 저는 체크하지 않았습니다.

- Use UTF8 as default server's character set 을 체크하여 서버의 기본 캐릭터 셋을 UTF8로 지정합니다.

 

 

 

- Install as service 를 체크하고 서비스명은 기본인 MySQL을 사용합니다.

- Enable networking 을 체크하고, 포트는 기본인 3306을 사용하였습니다. 

Next를 클릭하여 진행합니다.

 

 

 

MariaDB의 사용정보를 제조사로 전송한다는 여부의 체크이며, 체크하지 않고 Next로 진행합니다.

 

 

 

Install 을 클릭하여 설치를 진행합니다.

이후 설치가 완료되면 Finish를 클릭하여 설치를 완료하도록 합니다.

 

 

2. MariaDB 설치 확인하기

 

 

시작메뉴 > MariaDB 10.4 > MySQL Client 를 실행하도록 합니다.

 

 

켜자마자 비밀번호를 입력하는 부분이 나오며, 설치시 진행했던 root의 비밀번호를 입력합니다.

위와 같은 화면이 보인다면 정상적으로 설치가 완료되었습니다.

우선적으로 자주쓰거나 중요한 어노테이션 위주로 정리할 예정이며, 추가적으로 사용하거나 알게되는 어노테이션이 있을 시 지속적으로 추가하여 기록할 예정입니다.

 

 

■ 어노테이션 이란?

 

일반적으로 스프링을 사용하다보면 @ 사인으로 시작하는 부분을 많이 볼 수 있는데, 이러한 것의 이름을 어노테이션 이라고 합니다. 어노테이션이 생기기 전에는 xml로 설정하여 관리 하였으나, 양이 너무 많아지면 관리 및 유지보수가 어려워 지는 단점이 있었습니다. 어노테이션이 생긴 이후부터는 사용과 관리가 매우 쉬워져 요즘은 대부분 어노테이션을 사용하여 개발을 합니다.

 

 

■ 어노테이션 의 종류

 

- @SpringBootApplication

Spring Boot 애플리케이션이 실행시 진입클래스를 가리키에 되는 어노테이션 입니다.

 

ex)

@SpringBootApplication
public class Application {
    public static void main(String arg[]){
        SpringApplication.run(Application.class, arg);
    }
}

 

- @RestController

view가 필요없는 API만을 지원하는 서비스에서 사용합니다. Spring에서 Controller 중 view로 응답하지 않는 Controller를 뜻합니다. 

 

ex)

@RestController
@RequestMapping("/v1/{mallId}/sales")
public class GiftishowRestApi {
  
   private final Logger logger = LoggerFactory.getLogger(getClass());

   @Autowired
   private GiftishowService giftishowService;

 

- @RequestMapping

Spring 컨트롤러의 URI 메소드를 정의하는데 쓰입니다. 요청받는 형식을 GET, POST, PATCH, PUT, DELETE 로 정의 할 수 있으며, 정의하지 않을경우 디폴트로 GET이 정의 됩니다.

 

ex)

@RestController
@RequestMapping("/v1/{mallId}/sales")
@Validated
public class AppInstallRestApi {

   @Autowired
   ApplicationService appService;

   @Autowired
   AppInstallService appInstallService;

   @Autowired
   MemberService memberService;

 

- @GetMapping, @PostMapping, @PatchMapping, @PutMapping, @DeleteMapping

각 매핑별로 Get을 예로 들면 위에서 설명한 @RequestMapping(Method=RequestMethod.GET) 와 같습니다.

각각의 형식별로 사용할 수 있습니다.

 

ex)

@GetMapping("/employees")
public List getAllEmployees() {
 return employeeRepository.findAll();
}

 

- @PathVariable

Http의 요청에 대해 매칭되는 request parameter값이 자동으로 매칭됩니다. 

 

ex)

@GetMapping("applications/{OsType}/application/{token}")
public ResponseEntity<?> getAppInstall(@PathVariable final String OsType
       , @PathVariable final String token, final ResponseMapper mapper) {
   AppInstall appInstall = appInstallService.getAppInstallByToken(mallId, token);
   if (appInstall == null) {
       mapper.mapFrom("result",false);
   }else{
       mapper.mapFrom("result",true);
       mapper.mapFrom("marketingAgreeYn", appInstall.getMktgReceiveAgreeYn());
          }
   return ResponseEntity.ok(mapper.getDto());
}

 

- @RequestBody

Http Post 요청에 대해서만 처리되며, Post 요청의 Request body에 있는 request message 의 값을 얻어와 매칭됩니다. 

 

ex)

@PostMapping("applications/application/{token}/agree")
public ResponseEntity<?> updateAppAgree(@RequestBody OpenApiDTO reqDto,
                                       @PathVariable final String mallId, @PathVariable final String token,
                                       final ResponseMapper mapper) {

   if (StringUtils.isBlank(reqDto.getValue("agreeYn", String.class))) {
       throw new BadRequestException("agreeYn must not be empty");
   }

   final AppInstall app = appInstallService.getAppInstallByToken(mallId,token);
   final AgreeYN ag = AgreeYN.valueOf(reqDto.get("agreeYn").toString());
   final Date today = new Date();

   if (app == null) {
       throw new NotFoundException("application not found");
   }

 

- @AutoWired

객체에 대한 의존성을 주입시키며, 해당 어노테이션을 사용할 시 스프링이 자동으로 값을 할당하게 됩니다. 일반적으로 Controller에서 DAO, Service를 주입시킬때 많이 사용합니다.

 

ex)

public class AppInstallRestApi {

   @Autowired
   ApplicationService appService;

   @Autowired
   AppInstallService appInstallService;

   @Autowired
   MemberService memberService;

   @Autowired
   MemberReceiveAgreeRepository repository;

 

- @Service

Service Implement에서 사용되며, 비즈니스 로직을 수행하는 클래스라는 것을 나타내는 용도이다.

 

@Service
@Transactional
public class MemberMyShopServiceImpl implements MemberMyShopService {

   private final Logger logger = LoggerFactory.getLogger(getClass());
  
   /* (non-Javadoc)
    * @see net.g1project.ecp.customer.service.MemberMyShopAService#createMyShopMember(java.lang.Long)
    */
   @Autowired
   private BWJPAQueryFactory factory;

   @Autowired
   private MemberMyshopHistRepository memberMyshopHistRepository;
...

 

 

 

'develop > Spring' 카테고리의 다른 글

Spring 이란? 간단 설명  (0) 2019.10.03

■ IoC 란?

 

Inversion of Control 의 줄임말로, 제어의 역전 이라는 뜻이 된다. 제어의 역전이란 메소드나 객체의 호출작업을 개발자가 아닌 외부에서 결정되는 것을 의미한다.

 예를 들면 자바 프로그램은 main() 메소드에서 시작하여 개발자가 미리 정한 순서를 따라 객체가 생성되고 실행된다. 그런데 서블릿을 생각해보면 개발해서 서버로 배포할 수 있지만, 배포하고 나서는 개발자가 직접 제어할 수 없고 서블릿에 대한 제어 권한을 가진 컨테이너가 적절한 시점에 서블릿 클래스의 객체를 만들고 그 안에 메소드를 호출한다. 대부분의 프레임 워크는 이와 같은 방식으로 사용 되며, 개발자는 필요한 부분을 개발해서 끼워넣기 형식으로 개발하고 실행한다. 이와 같이 조립된 코드의 최종 호출은 개발자에 의해 제어되는 것이 아닌 프레임워크에 의해 제어 되게 되는데 이 때문에 제어의 역전이라 하는 것 이다.

 

 

■ DI 란?

 

Dependency Injection 의 줄임말로, 의존성 주입 이라는 뜻이 된다. 의존성 주입은 제어의 역전이 일어날때 스프링 내부에 있는 객체들간의 관계를 관리할 때 사용하는 기법이다. 자바에서는 일반적으로 인터페이스를 이용해서 의존적인 객체의 관계를 최대한 유연하게 처리할 수 있도록 한다. 

 의존성 주입은 의존적인 객체를 직접 생성하거나 제어하는것이 아닌, 특정 객체에 필요한 객체를 외부에서 결정해서 연결 시키는 것을 의미한다. 우리는 클래스의 기능을 추상적으로 묶어둔 인터페이스를 갖다 쓰면 되는 것 이다. 이러한 의존성 주입으로인해 모듈간의 결합도가 낮아지고 유연성이 높아진다.

 

 

출처) https://jobc.tistory.com/30

'IT 용어 정리' 카테고리의 다른 글

트랜잭션 (Transaction) 이란?  (0) 2019.10.14
리눅스 런레벨 간단 정리  (0) 2019.10.14
Spring Boot 란?  (0) 2019.10.04
JVM 이란?  (0) 2019.09.30
DAO 와 DTO 란?  (0) 2019.09.26

+ Recent posts