Brug af JSR-330-anmærkninger med fjeder
1. Oversigt
I denne øvelse vil vi undersøge brugen af JSR-330-annoteringer med Spring. Vi ser på @Inject , @Navnet, og @ManagedBean anmærkninger.
2. Bean Definition med @Named
Lad os først se på, hvordan vi kan definere en bønne med @Named .
@Navnet annotation spiller rollen som @Component :
@Named
public class JsrPersonRepository {
// Implementation details
}
Her kommenterer vi JsrPersonRepository klasse med @Navnet . Som et resultat registrerer Spring det som en bønne.
3. Bean Definition med @ManagedBean
Nu fortsætter vi med @ManagedBean annotation, som også markerer en klasse som en bønne:
@ManagedBean
public class EmployeeService {
// Implementation details
}
Svarende til @Navnet , Spring registrerer @ManagedBean kommenterede klasser som bønner.
4. Bean Wiring med @Inject
Nu hvor vi har defineret vores bønner ved hjælp af @Bean eller @ManagedBean, vi vil herefter se på, hvordan vi kan definere bønneafhængighederne.
Til dette formål bruger vi @Inject annotation, som har lignende adfærd med @Autowired.
Først vil vi prøve konstruktørindsprøjtningen:
@Named
public class JsrConstructorInjectionPersonService {
private final PersonRepository personRepository;
@Inject
public JsrConstructorInjectionPersonService(PersonRepository personRepository) {
this.personRepository = personRepository;
}
}
For det andet vil vi se på setter-injektionen:
@Named
public class JsrSetterInjectionPersonService {
private PersonRepository personRepository;
@Inject
public void setPersonRepository(PersonRepository personRepository) {
this.personRepository = personRepository;
}
}
Til sidst vil vi se feltindsprøjtningen:
@Named
public class JsrFieldInjectionPersonService {
@Inject
private PersonRepository personRepository;
}
Lad os derefter se på, hvordan vi kan kvalificere vores bønner under injektionen.
Vi vil først navngive vores bønne med @Named anmærkning:
@Named("department")
public class DepartmentRepository {
}
Her bruger vi værdien @Named at navngive vores bønne. Som et resultat vil Spring registrere DepartmentRepository under navnet afdeling .
Så bruger vi igen @Navnet til kvalifikation:
@Named
public class DepartmentService {
private final DepartmentRepository departmentRepository;
@Inject
public DepartmentService(@Named("department") DepartmentRepository departmentRepository) {
this.departmentRepository = departmentRepository;
}
}
Her bruger vi @Inject for at udløse den automatiske ledningsføring. Vi bruger også @Named("afdeling") for at kvalificere DepartmentRepository bean.
5. Resumé
I dette selvstudie har vi undersøgt, hvordan vi kan bruge JSR-330-annoteringer med Spring.
Tjek endelig kildekoden ud på Github.