Page History
...
Ved flere klasser samles de ved brug af @Import i en enkelt klasse.
Info |
---|
DI.1.4 § Skal flere klasser samles logisk bruges @Import i en samlende java-klasse |
Her samler NotificationBrokerServerSetup således konfigurationsklassen ovenfor og bla. en Database-konfigurationsklasse.
Code Block | ||||
---|---|---|---|---|
| ||||
@Configuration @Import({ NotificationBrokerSetup.class, PublisherSetup.class, DatabaseSetup.class }) public class NotificationBrokerServerSetup { @Bean public DataSource primaryDataSource(@Value("${datasource.jndi}") String jndiName) { JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup(); DataSource dataSource = dataSourceLookup.getDataSource(jndiName); return dataSource; } ... |
Afhængigheder og injection
...
Brug @Autowired for at injecte afhængigheder i HttpServletten. Dette valg er bevidst truffet for kun at implementere injektionen i denne servlet-klasse og ikke introducere yderligere kompleksitet eller struktur i andre dele af applikationen. Denne tilgang fokuserer på at holde koden inden for HttpServlet-konteksten mere kortfattet og læsbar, hvilket letter udvikling og vedligeholde den specifikke servlet.
Info |
---|
DI.1.5 § De definerede beans injectes med @Autowired annotationen i HttpServletten. Det er kun i HttpServletten dette foretages. |
Herunder ses inklusionen af NotificationBrokerService-bean'en fra først nævnte konfigurationsklasse. Derudover kan @Value annotationen bruges til properties mm.
Code Block | ||||
---|---|---|---|---|
| ||||
@WebServlet("/*") public class NotificationBrokerServlet extends HttpServlet { ... @Value("${dgws.headers.required}") private boolean dgwsHeadersRequired; ... @Autowired private NotificationBrokerService service; ... |
...
Lifecycle Management
Opret og konfigurer en ApplicationContext ved hjælp af AnnotationConfigApplicationContext / AnnotationConfigWebApplicationContext. Det skal være en af disse to for at muliggøre brugen af konfigurationsklasserne.
Info |
---|
DI.1.6 § Der skal anvendes een af AnnotationConfigApplicationContext / AnnotationConfigWebApplicationContext som ApplicationContext-implementationsklasse. |
Denne skal konfigureres med de konfigurationsklasser der er relevante
Gem ApplicationContext'en gemmes i ServletContext for at gøre det den tilgængeligt for resten af applikationen.Lifecycle Management:
Brug ServletContextListener-interfaces til at initialisere og rydde op i ApplicationContext i komponenten. Sørg for, at Ligeledes skal ApplicationContext lukkes korrekt, når webapplikationen stoppes.
Info |
---|
DI.1.7 § ApplicationContext'en skal oprettes og nedlægges ved hhv. contextInitialized og contextDestroyed på ServletContext'en. |
Injection i servlets:
På servlettens init-metode skal AnnotationConfigApplicationContext’en hentes (via ServletContexten) og herigennem skal den aktuelle Servlet have sine afhængigheder injected. Dette skal foregå ved kald til autowireBean og give Servlet-instansen med.
...