๐Ÿ’ป
Albert's Til
GitHub
  • ๋งค์ผ๋งค์ผ ์กฐ๊ธˆ์”ฉ ์„ฑ์žฅํ•˜๊ธฐ
    • README
    • CS
      • Network
      • HTTP
        • NO-CACHE
      • ์˜ค๋ฅ˜ ์ฝ”๋“œ
      • ORM ๋„๊ตฌ
      • Design Pattern
        • CQRS Pattern
          • Event Sourcing and CQRS pattern
        • Builder Pattern
    • DB
      • MySQL
        • Timeline
        • Pagination
        • Index
        • Database Performance Optimization Strategies
        • B+ tree
        • MySQL Connectors VS MySQL Shell(Scripting) VS MySQL Workbench
        • MySQL Storage Engine Architecture
      • Normalization & Denormalization
      • JPA
        • @Transactional
        • Why JPA?
        • About JPA
        • N+1 Issue
        • Index
        • ElementCollection&CollectionTable
        • orphanRemoval
        • CascadeType
        • Use Subselect
        • Dynamic Instance Creation
        • Paging
        • Order
        • Spefication
        • mappedBy
      • MongoDB
        • ObjectId
      • Why MySQL?
      • ACID properties of transactions
      • Between JPA and JDBC
      • Identifiers in Hibernate/JPA
    • Java
      • Jackson de/serialize
      • Collections.singletonList() vs List.of()
      • Manage dependencies in Gradle
      • Logging Level
      • Bean Validation
      • JVM Internals
        • Threads
          • Frame
        • Shared Between Threads
          • Classloader
            • Class Loader Hierarchy
            • Loading Linking Initialization
      • Java Collection Framework
      • Annotation
      • Generic
      • ๋””๋ฏธํ„ฐ ๋ฒ•์น™
    • Spring
      • Caching
      • Spring Integration Overview
        • ThreadPollTaskExecutor
        • Messaging Bridge
        • Channel Adapter
        • Poller
        • Configuration and @EnableIntegration
        • Message Endpoints
        • Message Channels
      • HATEOAS
      • @Autowired vs Constructor Dependency Injection
      • Spring Security
        • JWT ํ† ํฐ ์‚ฌ์šฉํ•œ ์ธ๊ฐ€
        • OAuth 2 Login
        • OAuth 2 ์ธ์ฆ
        • ์ธ๊ฐ€
        • ์ธ์ฆ
        • PasswordEncoder
      • IoC Container
      • Filter,Interceptor,AOP,Argument Resolver
      • Spring Annotation
      • About Spring
    • Kafka
      • Error Channel
    • Infra
      • Scale Up || Scale Out
      • Docker
        • Dockerfile
        • Docker Hub Deploy
        • Command
      • Cloud ์œ ํ˜•
        • Infrastructure as a Service
        • Platform as a Service
        • Software as a Service
      • ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ
        • ์—”์ง„์—‘์Šค(Nginx)
      • ์ฝ”๋“œ ์ž๋™ ๋ฐฐํฌ
        • Technical
      • AWS EC2
        • PEM(Privacy Enhanced Mail) ํ‚ค
      • AWS RDS
      • AWS S3
    • CodeSquad
      • Spring Boot Project 1์ฃผ์ฐจ ํšŒ๊ณ 
      • Spring Boot Project 2์ฃผ์ฐจ ํšŒ๊ณ 
      • Spirng Boot Project 3์ฃผ์ฐจ ํšŒ๊ณ 
      • Spring Boot Project 4์ฃผ์ฐจ ํšŒ๊ณ 
    • Foody Moody ํ”„๋กœ์ ํŠธ
      • Query Performance Comparison
      • HeartCount Asynchronous Issue
      • DeferredResult
      • ResponseBodyEmitter
      • SseEmitter (Spring)
      • Server-Sent Events (SSE)
      • ๊ธฐ์ˆ  ์Šคํƒ ์ ์šฉ ์ด์œ 
      • NO-CACHE(HTTP)
      • Transactional
    • DDD
      • AggregateId
    • Test
      • RestAssured
    • Coding and Algorithmic Problems
      • 819. Most Common Word
      • 344. Reverse String
      • 125. Valid Palindrome
      • 937. Reorder Data in Log Files
    • Node
      • Async... Await...
      • Custom Transactional Decorator Challenger
    • Python
      • Python Basic Grammar
        • Comments and Input/Output
        • Variable
        • Data type
        • Operations and syntax
        • List,Tuple,Dictionary,Set
        • Function
        • Conditional statement
        • Loop
    • HTML
      • HTML Basic
      • HTML Basic Tags
      • HTML Form Tags
      • HTML Table Tags
    • CSS
      • CSS Basic
      • CSS Practice
Powered by GitBook
On this page
  • POJO(Plain Old Java Object)
  • JavaBeans
  • DTO Pattern
  • VO
  • ๋ฆฌํ”Œ๋ž™์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • Runtime vs. Compile Time
  • IoC ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์• ๋„ˆํ…Œ์ด์…˜ ์Šค์บ๋‹ํ•˜๊ธฐ
  • @Component
  • @Autowired
  • @Scope
  • IoC
  • Spring ์ปจํ…Œ์ด๋„ˆ Configuration Metadata
  • Lifecycle Callbacks
  • Reference

Was this helpful?

  1. ๋งค์ผ๋งค์ผ ์กฐ๊ธˆ์”ฉ ์„ฑ์žฅํ•˜๊ธฐ
  2. Spring

IoC Container

POJO(Plain Old Java Object)

  • ์˜ค๋ž˜๋œ ๋ฐฉ์‹์˜ ๋‹จ์ˆœ ์ž๋ฐ” ๊ฐ์ฒด, ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์—†๋Š” ์ผ๋ฐ˜ Java ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ€๋ฒผ์šด ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด์ž…๋‹ˆ๋‹ค.

  • POJO๋Š” ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๋ช…๋ช… ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

JavaBeans

  • JavaBean์€ ๋ณธ์งˆ์ ์œผ๋กœ POJO์ด๋ฏ€๋กœ JavaBean์€ ๋Œ€๋ถ€๋ถ„ POJO์™€ ์œ ์‚ฌํ•˜๋ฉฐ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์—„๊ฒฉํ•œ ๊ทœ์น™ ์ง‘ํ•ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ทœ์น™์€ ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•˜๊ณ  null ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง€๋ฉฐ getX() ๋ฐ setX() ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

DTO Pattern

  • Data Transfer Object

  • DTO๋Š” ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ๋„คํŠธ์›Œํฌ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ’์„ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค.

    • ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์—ฌ๋Ÿฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋˜๋Š” ๊ฐ’์„ ํฌํ•จํ•จ์œผ๋กœ์จ ์›๊ฒฉ ์ž‘์—…์—์„œ ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

VO

  • Value Object

  • equals()์™€ hashCode() ๋ฉ”์„œ๋“œ๋ฅผ override

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆซ์ž, ๋‚ ์งœ ,๋ฌธ์ž์—ด ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์€ ๊ฐœ์ฒด๋ฅผ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ถˆ๋ณ€์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์˜์˜๊ฐ€ ์ด POJO๋กœ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์Šคํ”„๋ง์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋Œ€๋ถ€๋ถ„ IoC ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ POJO๋ฅผ ๊ตฌ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ์ผ๊ณผ ์—ฐ๊ด€๋ผ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํ”Œ๋ž™์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์„ฑ์ฐฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋˜๋Š” ์„ฑ์ฐฐ์€ ์ž์ฒด ๊ตฌ์กฐ์™€ ๋™์ž‘์„ ๊ฒ€์‚ฌ, ์„ฑ์ฐฐ ๋ฐ ์ˆ˜์ •ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค.

  • Java์™€ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์ž‰ ์–ธ์–ด์—์„œ ๋ฆฌํ”Œ๋ ˆ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ์ธํ„ฐํŽ˜์ด์Šค, ํ•„๋“œ, ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ๋ชฐ๋ผ๋„ ๋Ÿฐํƒ€์ž„์— ํด๋ž˜์Šค,์ธํ„ฐํŽ˜์ด์Šค,ํ•„๋“œ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฒ€์‚ฌ ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒˆ ๊ฐœ์ฒด์˜ ์ธ์Šคํ„ด์Šคํ™” ๋ฐ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Java ๋ฆฌํ”Œ๋ ‰์…˜์€ ์ด๋ฆ„๋ณ„๋กœ ํด๋ž˜์Šค ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ •๋ณด์˜ ๋™์  ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜๊ณ  ์‹คํ–‰ ์ค‘์ธ Java ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฆฌํ”Œ๋ ‰์…˜์€ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ์ค‘์ธ Java ํ”„๋กœ๊ทธ๋žจ์ด ์ž์ฒด์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ "๊ฒ€์‚ฌ"ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ ๋‚ด๋ถ€ ์†์„ฑ์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Runtime vs. Compile Time

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Compile Time

    • Java์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋ช…๋ น์ด๋‚˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜์—ฌ์•ผ ํ•œ๋‹ค. ์ปคํŒŒ์ผ ์‹œ๊ฐ„ ๋™์•ˆ ์†Œ์Šค ์ฝ”๋“œ๋Š” .java์—์„œ .class๋กœ์˜ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ปคํŒŒ์ผ ์‹œ๊ฐ„ ๋™์•ˆ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ฝ”๋“œ์˜ ๊ตฌ๋ฌธ,์˜๋ฏธ ์ฒด๊ณ„ ๋ฐ ์œ ํ˜•์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ๊ตฌ๋ฌธ๊ณผ ์˜๋ฏธ๋ฅผ ์ฒดํฌ(sytax and semantic)

    • ํ”„๋กœ๊ทธ๋งด ์‹คํ–‰์ „

  • Runtime

    • ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์ธ ๋Ÿฐํƒ•์ž…๋‹ˆ๋‹ค.

    • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ›„

  • ๋ฆฌํ”Œ๋ž™์…˜์„ ์ง€์›ํ•˜๋Š” ์–ธ์–ด๋Š” ๋Ÿฐํƒ•์ž„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํžŒ๋‹ค

    • ๋Ÿฌํƒ•์ž„์— ์†Œ์Šค ์ฝ”๋“œ ๊ตฌ์„ฑ(์˜ˆ: ์ฝ”๋“œ ๋ถˆ๋ก, ํด๋ž˜์Šค ,๋ฉ”์†Œ๋“œ ,ํ”„๋กœํ† ์ฝœ ๋“ฑ)์„ 1๋“ฑ๊ธ‰ ๊ฐœ์ฒด๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

    • ํด๋ž˜์Šค ๋˜๋Š” ํ•จ์ˆ˜์˜ ๊ธฐํ˜ธ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ํ•ด๋‹น ํด๋ž˜์Šค ๋˜๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋˜๋Š” ํ˜ธ์ถœ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    • ๋Ÿฐํƒ€์ž„ ์‹œ ์†Œ์Šค ์ฝ”๋“œ ๋ฌธ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์˜๋ฏธ๋‚˜ ๋ชฉ์ ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์–ธ์–ด์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ƒˆ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

IoC ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์• ๋„ˆํ…Œ์ด์…˜ ์Šค์บ๋‹ํ•˜๊ธฐ

  • ์• ๋„ˆํ…Œ์ด์…˜์„ ๋ถ™์ธ ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์Šค์บ๋‹ํ•˜๋ ค๋ฉด ์šฐ์„  IoC ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ธ์Šคํ„ด์Šคํ™”(instantiation)ํ•ด์•ผ ํ•œ๋‹ค.

    • ๊ทธ๋ž˜์•ผ ์Šคํ”„๋ง์ด @Configuration,@Bean์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋‚˜์ค‘์— IoC ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋นˆ ์ธ์Šคํ„ฐ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ์Šคํ”„๋ง์€ ๊ธฐ๋ณธ ๊ตฌํ˜„์ฒด์ธ ๋นˆ ํŒฉํ† ๋ฆฌ(bean factory)์™€ ์ด์™€ ํ˜ธํ™˜๋˜๋Š” ๊ณ ๊ธ‰ ๊ตฌํ˜„์ฒด์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ(application context), ๋‘๊ฐ€์ง€ IoC ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์— ์ถฉ์‹คํ•˜๋ฉด์„œ๋„ ๋นˆ ํŒฉํ† ๋ฆฌ๋ณด๋‹ค (์Šคํ”„๋ง์„ ์• ํ”Œ๋ฆฟ์ด๋‚˜ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋“ฑ) ๋ฐœ์ „๋œ ๊ธฐ๋Šฅ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฆฌ์†Œ์Šค์— ์ œ์•ฝ์„ ๋ฐ›๋Š” ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ฐ€๊ธ‰์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

    • BeanFactory์™€ ApplicationContext๋Š” ๊ฐ๊ฐ ๋นˆ ํŒฉํ† ๋ฆฌ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

      • ApplicationContext๋Š” BeanFactory์˜ ํ•˜์œ„ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ํ˜ธํ™˜์„ฑ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

  • IoC ์ปจํ…Œ์ด๋„ˆ์—์„œ POJO ์ธ์Šคํ„ด์Šค/๋นˆ ๊ฐ€์ ธ์˜ค๊ธฐ

    • ๊ตฌ์„ฑ ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋นˆ์„ ๋นˆ ํŒฉํ† ๋ฆฌ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ์—์„œ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์œ ์ผํ•œ ๋นˆ ์ด๋ฆ„์„ getBean() ๋ฉ”์„œ๋“œ์˜ ์ธ์ˆ˜๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • POJO ํด๋ž˜์Šค @Component๋ฅผ ๋ถ™์—ฌ DAO ๋นˆ ์ƒ์„ฑํ•˜๊ธฐ

    • ์ฒ˜์Œ์• ๋Š” ๊ตฌ์„ฑ ํด๋ž˜์Šค์—์„œ ๊ฐ’์„ ํ•˜๋“œ์ฝ”๋”ฉํ•ด ์Šคํ”„๋ง ๋นˆ์„ ์ธ์Šคํ„ด์Šคํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

    • ์‹ค์ œ๋กœ POJO๋Š” ๋Œ€๋ถ€๋ถ„ DB๋‚˜ ์œ ์ € ์ž…๋ ฅ์„ ํ™œ์šฉํ•ด ์ธ์Šคํ„ด์Šค๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • Domain ํด๋ž˜์Šค ๋ฐ DAO(Data Access Object) ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ฐ์ฒด) ๋ฅผ ์ด์šฉํ•ด POJO๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

@Component

  • ํผ์‹œ์Šคํ„ด์Šค (persisitence) (์˜์†ํ™”)

  • ์„œ๋น„์Šค (service)

  • ํ”„๋ ˆ์  ํ…Œ์ด์…˜ (presentation) (ํ‘œํ˜„)

  • ์„ธ ๋ ˆ์ด์–ด layer (๊ณ„์ธต)

@Autowired

  • @Resource

  • @Inject

@Scope

์Šค์ฝ”ํ”„
์„ค๋ช…

singleton

IoC ์ปจํ…Œ์ด๋„ˆ๋‹น ๋นˆ ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

prototype

์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ๋นˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

request

HTTP ์š”์ฒญ๋‹น ํ•˜๋‚˜์˜ ๋นˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

session

HTTP ์„ธ์…˜๋‹น ๋นˆ ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

globalSession

์ „์—ญ HTTP ์„ธ์…˜๋‹น ๋นˆ ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํฌํ„ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

IoC

  • service locator pattern

    • ๋นˆ๋“ฑ๋ก ๋ฐ ์ƒ์„ฑ

  • dependency injection(์˜์กด์„ฑ ์ฃผ์ž…)

    • Without dependency injection

    • Constructor injection

    • Interface injection

    • Assembly

  • contextualized lookup(์ƒํ™ฉ์— ๋งž๋Š” ์กฐํšŒ)

  • template method design pattern(ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด)

  • strategy design pattern(์ €๋žต ๋””์ž์ธ ํŒจํ„ด)

Spring ์ปจํ…Œ์ด๋„ˆ Configuration Metadata

  • XML-based metadata

  • Annotation-based configuration

    • define beans using annotation-based configuration metadata

  • Java-based configuration

    • define beans external to your application classes by using Java rather than XML files.

Lifecycle Callbacks

  • @PostConstruct

    • ๊ตฌ์„ฑํ›„

  • @PreDestroy

    • ์‚ฐ์ „ ํŒŒ๊ดด

Reference

Last updated 1 year ago

Was this helpful?

https://www.baeldung.com/java-pojo-javabeans-dto-vo
https://www.baeldung.com/java-pojo-class
https://en.wikipedia.org/wiki/Reflective_programming
https://www.oracle.com/java/technologies/service-locator.html
https://en.wikipedia.org/wiki/Dependency_injection
https://springframework.guru/service-locator-pattern-in-spring/