Avatar
πŸ˜‰

Organizations

  • git μ—μ„œ tagλŠ” μ–Έμ œ μ“°κ³  μ–΄λ–»κ²Œ μ“ΈκΉŒ?

    • Gitμ—μ„œ **tag(νƒœκ·Έ)**λŠ” νŠΉμ • 컀밋에 이름을 λΆ™μ—¬μ„œ μ‹λ³„ν•˜κΈ° μ‰½κ²Œ λ§Œλ“œλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.
    • 일반적으둜 릴리즈 버전을 ν‘œμ‹œν•  λ•Œ 많이 μ‚¬μš©λ˜λ©°, νŠΉμ • μ‹œμ μ˜ μŠ€λƒ…μƒ·μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

    🎯 νƒœκ·Έμ˜ μ£Όμš” μ—­ν• 

    1. 릴리즈 λ§ˆν‚Ή

      • 예: v1.0.0, v2.1.3
      • λ°°ν¬ν•œ 버전이 μ–΄λ–€ 컀밋인지 λͺ…ν™•ν•˜κ²Œ 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€.
    2. μŠ€λƒ…μƒ· μ €μž₯

      • νŠΉμ • 컀밋에 μ€‘μš”ν•œ 의미λ₯Ό λΆ€μ—¬ν•˜κ³  싢을 λ•Œ (예: 첫 배포, ν…ŒμŠ€νŠΈ μ™„λ£Œ 지점 λ“±)
    3. CI/CD 트리거용

      • νƒœκ·Έκ°€ push될 λ•Œ μžλ™ λ°°ν¬λ˜λ„λ‘ CI νŒŒμ΄ν”„λΌμΈ 섀정이 κ°€λŠ₯

    πŸ› οΈ νƒœκ·Έμ˜ μ’…λ₯˜

    1. Lightweight Tag (κ°€λ²Όμš΄ νƒœκ·Έ)
      • λ‹¨μˆœνžˆ 컀밋을 κ°€λ¦¬ν‚€λŠ” 포인터
      • Git λ‚΄λΆ€μ μœΌλ‘œλŠ” λΈŒλžœμΉ˜μ™€ μœ μ‚¬ν•œ ꡬ쑰
      git tag v1.0.0
      
    2. Annotated Tag (주석이 μžˆλŠ” νƒœκ·Έ)
      • νƒœκ·Έ μƒμ„±μž 정보, λ‚ μ§œ, λ©”μ‹œμ§€ 등을 포함
      • λ¦΄λ¦¬μ¦ˆμ—λŠ” 보톡 이걸 μ‚¬μš©
      git tag -a v1.0.0 -m "Release version 1.0.0"
      

    πŸ“€ νƒœκ·Έ ν‘Έμ‹œ 및 곡유

    • νƒœκ·ΈλŠ” 기본적으둜 git push둜 μžλ™ ν‘Έμ‹œλ˜μ§€ μ•ŠμŒ. λͺ…μ‹œμ μœΌλ‘œ ν‘Έμ‹œν•΄μ•Ό 함:
      # νŠΉμ • νƒœκ·Έ ν‘Έμ‹œ
      git push origin v1.0.0
      
      # λͺ¨λ“  νƒœκ·Έ ν‘Έμ‹œ
      git push origin --tags
      

    πŸ” νƒœκ·Έ 확인

    # 둜컬 νƒœκ·Έ λͺ©λ‘
    git tag
    
    # νŠΉμ • νƒœκ·Έκ°€ κ°€λ¦¬ν‚€λŠ” 컀밋 보기
    git show v1.0.0
    

    🧽 νƒœκ·Έ μ‚­μ œ

    # 둜컬 νƒœκ·Έ μ‚­μ œ
    git tag -d v1.0.0
    
    # 원격 νƒœκ·Έ μ‚­μ œ
    git push origin --delete v1.0.0
    

    πŸ“¦ ν™œμš© μ˜ˆμ‹œ (릴리즈 관리)

    # μ½”λ“œκ°€ μ•ˆμ •ν™”λœ μ‹œμ 
    git checkout main
    git pull
    git tag -a v1.0.0 -m "First stable release"
    git push origin v1.0.0
    
    • CI/CD 도ꡬ(GitHub Actions, Jenkins λ“±)λŠ” 이 νƒœκ·Έλ₯Ό κ°μ§€ν•΄μ„œ v1.0.0을 μžλ™μœΌλ‘œ λ°°ν¬ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    Created Sat, 04 Jan 2025 13:18:03 +0900
  • Spring μ—μ„œ (boot 포함) component와 bean의 μ°¨μ΄λŠ”?

    Spring Boot (μ •ν™•νžˆλŠ” Spring Framework)μ—μ„œ @Component와 @Bean은 λͺ¨λ‘ Spring μ»¨ν…Œμ΄λ„ˆμ— 객체(빈, Bean)λ₯Ό λ“±λ‘ν•˜λŠ” 데 μ‚¬μš©λ˜μ§€λ§Œ, μ‚¬μš©ν•˜λŠ” 방식과 λͺ©μ μ΄ 쑰금 λ‹€λ¦…λ‹ˆλ‹€.


    πŸ”Ή 1. @Component

    • ν΄λž˜μŠ€μ— λΆ™μ΄λŠ” μ–΄λ…Έν…Œμ΄μ…˜
    • Spring이 μžλ™μœΌλ‘œ ν•΄λ‹Ή 클래슀λ₯Ό 빈으둜 등둝
    • @ComponentScan에 μ˜ν•΄ νƒμ§€λ˜μ–΄ 등둝됨
    @Component
    public class MyComponent {
        public void doSomething() {
            System.out.println("Component is working");
        }
    }
    

    βœ… νŠΉμ§•

    • μžλ™ 등둝
    • @Service, @Repository, @Controller도 사싀 @Component의 νŠΉμˆ˜ν™” 버전
    • νŒ¨ν‚€μ§€ μŠ€μΊ” 경둜 μ•ˆμ— μžˆμ–΄μ•Ό 함

    πŸ”Ή 2. @Bean

    • λ©”μ„œλ“œμ— λΆ™μ΄λŠ” μ–΄λ…Έν…Œμ΄μ…˜
    • 주둜 @Configuration 클래슀 μ•ˆμ—μ„œ μ‚¬μš©
    • κ°œλ°œμžκ°€ 직접 객체λ₯Ό μƒμ„±ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό Spring μ»¨ν…Œμ΄λ„ˆμ— 등둝
    @Configuration
    public class AppConfig {
        @Bean
        public MyComponent myComponent() {
            return new MyComponent(); // μˆ˜λ™ 등둝
        }
    }
    

    βœ… νŠΉμ§•

    • μˆ˜λ™ 등둝
    • μ™ΈλΆ€ 라이브러리 객체, 섀정값이 ν•„μš”ν•œ 경우 λ“± μœ μ—°ν•œ 객체 생성 κ°€λŠ₯
    • λ©”μ„œλ“œ 이름이 빈 이름이 됨 (ν•„μš”μ‹œ @Bean(name = "beanName")으둜 μ§€μ • κ°€λŠ₯)

    πŸ“Œ 정리

    ν•­λͺ© @Component @Bean
    λΆ™μ΄λŠ” μœ„μΉ˜ 클래슀 λ©”μ„œλ“œ
    등둝 방식 μžλ™ 등둝 (μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”) μˆ˜λ™ 등둝 (κ°œλ°œμžκ°€ λͺ…μ‹œμ μœΌλ‘œ 생성)
    μ‚¬μš© μš©λ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‚΄λΆ€ 클래슀 μ™ΈλΆ€ 라이브러리, λ³΅μž‘ν•œ μ΄ˆκΈ°ν™”
    μ„€μ • 클래슀 ν•„μš” μ—¬λΆ€ ν•„μš” μ—†μŒ @Configuration ν•„μš”

    πŸ™‹ μ–Έμ œ 써야 ν• κΉŒ?

    • λ‚΄κ°€ λ§Œλ“  클래슀λ₯Ό 빈으둜 λ“±λ‘ν•˜κ³  μ‹Άλ‹€λ©΄ β†’ @Component
    • μ™ΈλΆ€ 라이브러리 κ°μ²΄λ‚˜ 쑰건에 따라 λ‹¬λΌμ§€λŠ” 객체 생성이 ν•„μš”ν•  λ•Œ β†’ @Bean
    Created Sat, 21 Dec 2024 17:14:05 +0900
  • @Value 의 값이 바인딩 λ˜μ§€ μ•ŠμœΌμ‹ κ°€μš”?

    • Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰μ‹œν‚¬ λ–„ @Value둜 (org.springframework.beans.factory.annotation.Value) 값을 μ£Όμž…ν•˜λ €κ³  ν• λ–„ μƒκ°κ³ΌλŠ” λ‹€λ₯΄κ²Œ @Value둜 μ£Όμž…ν•œ 값이 μ œλŒ€λ‘œ λ°”μΈλ”©λ˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.

    • μ΄λŸ¬ν•œ ν˜„μƒμ€ μ™œ 생기며, μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

    • μš°μ„  Spring Bootλ₯Ό μ‹€ν–‰μ‹œν‚¬λ–„ loading μˆœμ„œλŠ” μ–΄λ–»κ²Œ λ˜λŠ”μ§€ λ¨Όμ € μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

    • Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 싀행될 λ•Œμ˜ λ‘œλ”© μˆœμ„œλŠ” 크게 λ‹€μŒκ³Ό 같은 λ‹¨κ³„λ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. 이 μˆœμ„œλŠ” Spring Framework의 λ™μž‘ 원리에 κΈ°λ°˜ν•˜λ©°, Spring Boot 특유의 κΈ°λŠ₯듀이 μΆ”κ°€μ μœΌλ‘œ ν¬ν•¨λ©λ‹ˆλ‹€.

    Created Wed, 27 Nov 2024 17:14:05 +0900
  • GoDoc GoDoc

    Clean Code μ„œλ‘ 

    Abstract

    μ£Όλ‹ˆμ–΄ 개발자일수둝 일단 κΈ°λŠ₯ κ΅¬ν˜„μ„ μš°μ„ μœΌλ‘œ μƒκ°ν•œλ‹€. λ‹€μ‹œ λ§ν•΄μ„œ λŒ€μ²΄λ‘œ μ½”λ“œμ˜ ν€„λ¦¬ν‹°λŠ” 뒷전이고 μƒκ°ν•œ κΈ°λŠ₯λŒ€λ‘œ λŒμ•„κ°€λŠ” μ½”λ“œλ‘œ μž‘μ„±ν•˜λ©΄ ν•  일을 λ‹€ν–ˆλ‹€κ³  μƒκ°ν•œλ‹€. μ•„λ‹ˆ, 비단 μ£Όλ‹ˆμ–΄ 개발자만의 λ¬Έμ œλŠ” 아닐 μˆ˜λ„ μžˆλ‹€. 업계에 μžˆμœΌλ©΄μ„œ λ³΄μ•„μ˜¨ λ§Žμ€ κ°œλ°œμžλ“€μ„ λŒμ•„λ΄€μ„ λ•Œ, μ½”λ“œ ν’ˆμ§ˆμ„ μƒκ°ν•˜λŠ” κ°œλ°œμžλŠ” 그리 λ§Žμ§€ μ•Šμ•˜λ‹€. 심지어 Clean Codeκ°€ λ­”μ§€ λͺ¨λ₯΄λŠ” μ‚¬λžŒλ„ λ§Žλ‹€. ν•˜μ§€λ§Œ μ½”λ“œμ—λ„ ν’ˆμ§ˆμ΄λΌλŠ” 것은 λΆ„λͺ…νžˆ μ‘΄μž¬ν•˜λ©°, κ°œλ°œμžκ°€ μž‘μ„±ν•œ μ½”λ“œκ°€ μ–΄λŠ μ •λ„μ˜ ν’ˆμ§ˆ μˆ˜μ€€μ„ κ°–μΆ”μ—ˆλŠ”κ°€λŠ” κ°κ΄€μ μœΌλ‘œ ν‰κ°€λ˜λŠ” 것이 μ’‹λ‹€. λͺ¨λ“  κ°œλ°œμžλŠ” dirty ν•˜μ§€ μ•Šμ€ cleanν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄ 계속 λ…Έλ ₯ν•΄μ•Ό ν•œλ‹€.

    Created Wed, 27 Nov 2024 17:14:05 +0900
Previous