Bonjour,
j'ai une petite question sur cette structure
C'est un exemple de classe utilitaire pour utiliser iBatis. Mais ma question porte sur la syntaxe, et pas sur iBatis.
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 doesnt 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; } }
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.
Partager