私は、GuiceをDIフレームワークとして使用し、HibernateをOrmとして使用してJavaアプリケーションを作成しています。私はjspページのカップルを提供するために単純な埋め込みJettyサーバーを実行したい。私は私のjspでいくつかのデータを追加するための簡単な豆のカップルを使用するようになりまし希望JSP beanのGuiceインジェクション
Server server = new Server(8081);
final WebAppContext webAppContext = new WebAppContext();
webAppContext.setContextPath("/rpga");
webAppContext.setResourceBase("web/WEB-INF/");
webAppContext.setDescriptor("web/WEB-INF/web.xml");
webAppContext.setParentLoaderPriority(true);
final Configuration.ClassList classlist = Configuration.ClassList.setServerDefault(server);
classlist.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration","org.eclipse.jetty.annotations.AnnotationConfiguration");
webAppContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$|.*/classes/.*");
webAppContext.setServer(server);
server.setHandler(webAppContext);
server.start();
server.join();
:私は、次のコードを使用してサーバを実行するために管理しました。私は豆を作り、それに私のdaoを注入しようとしましたが、豆はGuiceによって管理されていないので、Daoは注入されません。
私のJSPは
<html>
<head>
<title>Playlist</title>
</head>
<body>
<jsp:useBean id="playlist" class="com.duom.beans.PlaylistBean" />
...do stuff with playlistBean
</body>
</html>
そして、私の豆のようになります。
import com.google.inject.Inject;
public class PlaylistBean {
@Inject
private PlaylistDao playlistDao;
...do stuff
}
私は自分の目標を達成するために何をしないのですか?
私はあなたができるとは思わない。 JSPでDIを使用するには、Java EEのCDIフレームワークを使用する必要があります。インスタンスを取得するためにGuiceインジェクタに直接渡されるファクトリを呼び出す独自のJSPタグを作成したい場合を除きます。 (これは間違いなくハックであり、良いものではないことに注意してください)。 –
返信いただきありがとうございます、私は最後に解決策を見つけることができました、私の答えは以下を参照してください! – Duom