Java >> Java tutorial >  >> Tag >> Spring

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.


Java tag