<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - JSF</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur JSF et ses bibliothèques de composants associées (PrimeFaces, IceFaces, RichFaces...). Avant de poster -> FAQ JSF]]></description>
		<language>fr</language>
		<lastBuildDate>Thu, 13 Aug 2026 06:15:39 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - JSF</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Sur une articulation du projet : l’injection de dependence via CDI</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178834&amp;goto=newpost</link>
			<pubDate>Mon, 25 Aug 2025 21:21:42 GMT</pubDate>
			<description>Bonjour, 
Je developpe un...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je developpe un projet (Etudiants, cours dispensés) avec JSF et serveur Wildfly<br />
<br />
Préliminaire: une classe singleton pour retourner un object connection à une base de données.<br />
<br />
Par exemple, pour la gestion des entités ‘Course’, on a besoin d’une classe ‘CourseDAO’ pour extraire ou MAJ les informations d’un représentant (un cours). Cette classe est elle-même une dépendence du bean ‘AbonneControllerBean.java’ qui fait appel à la methode de celui-ci: coursedao.findAll() pour retrouver la liste de tous les cours.<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">@Named</span>
<span style="color: #339933;">@SessionScoped</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> AbonneControllerBean <span class="br0">&#123;</span>
&nbsp;
	<span style="color: #0000ff;">public</span> String groupName;
	<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> groupid;
	<span style="color: #0000ff;">public</span> Abonne session_abonne;
	<span style="color: #0000ff;">public</span> List&lt;Student&gt; students;  <span style="color: #808080;">// present here whereas the Abonne POJO class shall only contain a list of lastNames</span>
	<span style="color: #339933;">@Inject</span>
	<span style="color: #0000ff;">public</span> StudentDAO studentDAO;
&nbsp;
	<span style="color: #808080;">//private List&lt;String&gt; courseNames;</span>
	<span style="color: #0000ff;">private</span> List&lt;Course&gt; courses;
	<span style="color: #339933;">@Inject</span>
	<span style="color: #0000ff;">public</span> CourseDAO courseDAO;
&nbsp;
	<span style="color: #339933;">@PostConstruct</span>
	<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> init<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	   <span style="color: #0000ff;">this</span>.groupName = <span style="color: #FF0000;">&quot;science&quot;</span>;
	   <span style="color: #0000ff;">this</span>.groupid = <span style="color: #cc66cc;">1</span>;
	   IDatabase connectMySQLService = DatabaseMySQLConnect.getInstance<span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span style="color: #808080;">//	this.studentDAO = new StudentDAO(connectMySQLService);</span>
	   <span style="color: #0000ff;">this</span>.studentDAO.setConnectService<span class="br0">&#40;</span>connectMySQLService<span class="br0">&#41;</span>;
	   <span style="color: #0000ff;">this</span>.students = <span style="color: #0000ff;">this</span>.studentDAO.findAll<span class="br0">&#40;</span><span class="br0">&#41;</span>;
	   <span style="color: #0000ff;">this</span>.courseDAO.setConnectService<span class="br0">&#40;</span>connectMySQLService<span class="br0">&#41;</span>;
	   <span style="color: #0000ff;">this</span>.courses = <span style="color: #0000ff;">this</span>.courseDAO.findAll<span class="br0">&#40;</span><span class="br0">&#41;</span>;
	<span class="br0">&#125;</span>
&nbsp;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>Ce que j’ai compris sur CDI en lisant un extrait de la doc <a rel="nofollow" href="https://jakarta.ee/learn/docs/jakartaee-tutorial/current/cdi/cdi-basic/cdi-basic.html" target="_blank">https://jakarta.ee/learn/docs/jakart...cdi-basic.html</a><br />
<br />
CDI 3.0 est inclus dans la plateforme jakarta ee dans la continuité des services (ex EJB) de cette plateforme. Plus précisement elle est utilisée pour deux applications:<br />
- Dependency Injection<br />
- Managed Bean des bean stateful géré par la plateforme (ex anciens backing bean de l’annotation @ManagedBean de JSF migré vers CDI bean de l’annotation @Named)<br />
cité:<br />
«In addition, CDI provides the following services:<br />
- Integration with the Expression Language (EL), which allow any component to be used directly within a Jakarta Faces or a Jakarta Server Pages page.<br />
[…]- stop»<br />
<br />
La question que je me pose maintenant, c’est que dans ma classe CourseDAO, je définis une dépendence à un objet singleton, connectService et avec Springframework cette fois. Cet objet va faire l’appel à l’ouverture d’une Connexion à la base paramétrée (MySQL ou une autre, il suffit alors de changer cet objet). Est ce que cette façon de faire est une hierarchie et non passible de conflit CDI vs Springframework (Je n’ai pas encore attaqué les tests pour l’instant)?<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">@Configuration</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> CourseDAO <span style="color: #0000ff;">implements</span> IEntityDAO&lt;Course&gt; <span class="br0">&#123;</span>
&nbsp;
	<span style="color: #0000ff;">private</span> IDatabase connectService; <span style="color: #808080;">// dependency injection</span>
	<span style="color: #0000ff;">private</span> Connection connect;
&nbsp;
	<span style="color: #339933;">@Autowired</span>
	<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> setConnectService<span class="br0">&#40;</span>IDatabase connectService<span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span style="color: #0000ff;">this</span>.connectService = connectService;
	<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #0000ff;">public</span> CourseDAO<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span style="color: #0000ff;">try</span> <span class="br0">&#123;</span>
			<span style="color: #0000ff;">this</span>.connect = connectService.getConnection<span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span> <span style="color: #0000ff;">catch</span> <span class="br0">&#40;</span>Exception e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
			System.out.println<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;AbonneDAO error getConnection&quot;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
<span style="color: #808080;">//...</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>De l’autre côté, j’ai déjà fait des autres codes avec Spring pour créer des beans = classes de connexion dépendant d’un fichier properties.xml puis les injecter dans le DAO, ça marchait très bien.<br />
<br />
Je peux donner un peu plus de resultats sous 24h mais y a t-il déjà quelque chose qui frappe*?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f300/java/developpement-web-java/frameworks-web/jsf/">JSF</category>
			<dc:creator>tournesol59</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178834/java/developpement-web-java/frameworks-web/jsf/articulation-projet-l-injection-dependence-via-cdi/</guid>
		</item>
	</channel>
</rss>
