Bonjour,
Je developpe un projet (Etudiants, cours dispensés) avec JSF et serveur Wildfly

Préliminaire: une classe singleton pour retourner un object connection à une base de données.

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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@Named
@SessionScoped
public class AbonneControllerBean {
 
	public String groupName;
	public int groupid;
	public Abonne session_abonne;
	public List<Student> students;  // present here whereas the Abonne POJO class shall only contain a list of lastNames
	@Inject
	public StudentDAO studentDAO;
 
	//private List<String> courseNames;
	private List<Course> courses;
	@Inject
	public CourseDAO courseDAO;
 
	@PostConstruct
	public void init() {
	   this.groupName = "science";
	   this.groupid = 1;
	   IDatabase connectMySQLService = DatabaseMySQLConnect.getInstance();
		//	this.studentDAO = new StudentDAO(connectMySQLService);
	   this.studentDAO.setConnectService(connectMySQLService);
	   this.students = this.studentDAO.findAll();
	   this.courseDAO.setConnectService(connectMySQLService);
	   this.courses = this.courseDAO.findAll();
	}
 
}
Ce que j’ai compris sur CDI en lisant un extrait de la doc https://jakarta.ee/learn/docs/jakart...cdi-basic.html

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:
- Dependency Injection
- 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)
cité:
«In addition, CDI provides the following services:
- Integration with the Expression Language (EL), which allow any component to be used directly within a Jakarta Faces or a Jakarta Server Pages page.
[…]- stop»

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)?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Configuration
public class CourseDAO implements IEntityDAO<Course> {
 
	private IDatabase connectService; // dependency injection
	private Connection connect;
 
	@Autowired
	public void setConnectService(IDatabase connectService) {
		this.connectService = connectService;
	}
 
	public CourseDAO() {
		try {
			this.connect = connectService.getConnection();
		} catch (Exception e) {
			System.out.println("AbonneDAO error getConnection");
		}
	}
//...
}
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.

Je peux donner un peu plus de resultats sous 24h mais y a t-il déjà quelque chose qui frappe*?