Bonjour,

j'ai une petite question sur cette structure

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
public MyAppSqlConfig {
private static final SqlMapClient sqlMap;
static {
try {
String resource = “com/ibatis/example/sqlMap-config.xml”;
Reader reader = Resources.getResourceAsReader (resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
// If you get an error at this point, it doesn’t matter what it was. It is going to be
// unrecoverable and we will want the app to blow up hard so we are aware of the
// problem. You should always log such errors and re-throw them in such a way that
// you can be made immediately aware of the problem.
e.printStackTrace();
throw new RuntimeException (“Error initializing MyAppSqlConfig class. Cause: ” + e);
}
}
public static SqlMapClient getSqlMapInstance () {
return sqlMap;
}
}
C'est un exemple de classe utilitaire pour utiliser iBatis. Mais ma question porte sur la syntaxe, et pas sur iBatis.

On voit à la troisième ligne un bloc de code précédé du mot-clef static. Or j'ai appris dans mes cours il y a quelque temps que dans une classe on mettait des attributs et des méthodes. Or ce n'est ni l'un ni l'autre.

Donc qu'est-ce que c'est ? Un bloc qui est éxécuté au chargement de la classe par la JVM ? Si oui à quel moment ? Avant ou après l'appel au constructeur ? Durée de vie des objets créés à l'intérieur ?

Merci pour vos réponses, même partielles.