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:
Trimiteți un comentariu