Насколько я знаю, CDI использует динамический прокси-сервер для независящей инъекции бобов. Если есть класс, который реализует некоторый интерфейс не существует никаких проблем, например:Как CDI вводит прокси-классы для классов без интерфейсов
@SessionScoped
public class MessageBean implements Message {...}
прокси-сервер может быть создан на основе интерфейса сообщений, но что, если класс не реализует никакого интерфейса:
@SessionScoped
public class MessageBean {...}
Инъекция в Servlet все еще работает:
@WebServlet("/example")
public class MessageServlet extends HttpServlet {
@Inject
private MessageBean messageBean;
так что вопрос в том, как это обрабатывается, например, Weld?
Он просто расширяет класс. – BalusC
В соответствии с [docs] (https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html) существуют два оператора: _A proxy class extends java.lang.reflect .Proxy_ и _A прокси-класс реализует именно интерфейсы, указанные при его создании_, поэтому можно создать прокси без интерфейса? Согласно [this] (http://stackoverflow.com/questions/3291637/alternatives-to-java-lang-reflect-proxy-for-creating-proxies-of-abstract-classes), это возможно только с CGLIB для пример. – swch
hk2 также использует javassist, поскольку cglib кажется, как будто он не активно поддерживается в это время – jwells131313