09. december 2010 - 19:13Der er
4 kommentarer og 1 løsning
Java EE 6 scope eller stereotype, hvem har magten?
Hi,
hvis jeg har forstået det rigtigt, så kan jeg definere stereotype annotations, som selv indeholder scope og qualifier annotations, som så bliver mapped til en class, som er annoteret med denne stereotype.
hvis jeg har følgende class:
@SessionScoped @TestStereoTypeAs @TestStereoTypeRs public class Test { // ... }
Hvis nu TestStereoTypeAs er defineret sådan, at den class som bruger indeholder en @ApplicationScoped annotation
og TestStereoTypeRs er defineret sådan, at den indeholder en @RequestScoped annotation,
hvilken Scope har denne class så?
Nu er det måske bad code, hvis man annoterer sådan. Men hvem har magten i dette tilfælde? SessionScope eller en scope, som er defineret i en stereotype?
Hvis ikke der står noget i CDI spec, så må det være implementations specifikt d.v.s. at kode bør ikke antage noget om det.
Og jeg finder det faktisk ret sandsynligt, at det ikke er specificeret.
Ved du at IBM stemte imod CDI i JCP?
Deres begrundelse er interessant:
The current lack of portability between JSR 330 and JSR 299 applications will create significant difficulties for the community. Application developers who use patterns based on JSR 330 injection annotations and proprietary injection mechanisms will experience integration issues when taking advantage of JSR 299 contexts associated with JSF. Insufficient attention has been paid to these details in the development of these specifications and this will reflect poorly on the Java EE platform as a whole. Although IBM previously voted in support of both JSR 299 and 330 with the clear expectation that the "SE/EE injection programming model must be aligned into a single extensible programming model that defines a core set of functionality for SE and extends that with EE functionality", this has not yet been achieved. IBM will continue to support both expert groups in the development of a single integrated and extensible injection programming model.
Hvis jeg har forstået JSR-299 Final Release, side 18, afsnit 2.7.1.1 rigtigt, så definerer en stereotype default-values.
følgende bean er SessionScoped, fordi @SessionScoped er explicit defineret for denne bean og overskriver en scope, defineret i en stereotype ==================================================== @SessionScoped @TestStereoTypeThatDefinesAnApplicationScope @TestStereoTypeThatDefinesAnFooBarScope public class Test { // ... } ====================================================
Følgende code burde kaste en Exception fordi der opstår en konflikt ==================================================== @SessionScoped @ApplicationScoped public class Test { // ... } ====================================================
Og et svar hvis du synes at jeg har bidraget med noget.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.