Soweit ich weiß, CDI verwendet dynamischen Proxy für nicht-abhängige Bean-Injektion. Wenn es eine Klasse, die eine Schnittstelle implementiert, gibt es kein Problem, Beispiel:Wie CDI Proxys für Klassen ohne Schnittstellen einfügt
@SessionScoped
public class MessageBean implements Message {...}
Proxy können basierend auf Message-Interface erstellt werden, aber was ist, wenn die Klasse keine Schnittstelle implementiert:
@SessionScoped
public class MessageBean {...}
Die Injektion in Servlets funktioniert immer noch:
@WebServlet("/example")
public class MessageServlet extends HttpServlet {
@Inject
private MessageBean messageBean;
so ist die Frage, wie es zum Beispiel durch Weld behandelt wird?
Es erweitert nur die Klasse. – BalusC
Laut [docs] (https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html) gibt es zwei Anweisungen: _ Eine Proxy-Klasse erweitert java.lang.reflect .Proxy_ und _Eine Proxy-Klasse implementiert genau die bei ihrer Erstellung angegebenen Schnittstellen, so dass es möglich ist, einen Proxy ohne Schnittstelle zu erstellen. Nach [this] Thema ist es nur möglich mit CGLIB für http://stackoverflow.com/questions/3291637/alternatives-to-javal-lang-reflect-proxy-for-creating-proxies-of-abstract-classes Beispiel. – swch
hk2 verwendet auch javassist wie cglib scheint, als ob es zu dieser Zeit nicht aktiv gepflegt wird – jwells131313