23 noiembrie 2022

Spring 5 Fundamentals - ziua 2

5 scopes

  • Singleton: un singur bean (o singură instanță per container Spring), este scopul prestabilit
  • Prototype: un bean nou (instanță) la fiecare request = opusul lui Singleton
  • Request: un bean la fiecare request http
  • Session: un bean la fiecare sesiune 
  • Global: un bean per aplicație (racordat la durata aplicației, și nu a vizitei mele în aplicație)

Singleton, prototype --> în orice configurație

Request, session, global --> doar în proiecte web


@Service("customerService")

@Scope("singleton")

public class CustomerServiceImpl ...


sau

@Bean(name = "customerRepository")

@Scope(value = BeanDefinition.SCOPE_SINGLETON) // BeanDefinition.SCOPE_PROTOTYPE

public CustomerRepository getCustomerRepository() { ... }


@Autowired

Adnotarea poate fi deasupra setter-ului = injectează bean-ul. Poate fi și în constructor.

Fully autowired - cu stereotipuri: 
  • @Component - echivalentul unui bean la nivel de clasă
  • @Repository
  • @Service (cu sensul că găzduiește business logic)
  • @Controller (pentru creare de servicii web sau microservicii)

@Repository("speakerRepository")
public class HibernateSpeakerRepositoryImpl implements SpeakerRepository {
  . . .
}


@Service("speakerService")
public class SpeakerServiceImpl implements SpeakerService {
  . . .
}


@Configuration
@ComponentScan( {"com.application.path"} )
public class AppConfig {
  // nu mai este nevoie de declarare beans
}

Niciun comentariu: