Dhanji は、依存性注入に関する著書の中で、Spring Bean に名前を付けるときに名前空間を使用することを推奨しています。
本からの引用:
また、「set.BinaryTree」や「set.HashTable」など、「binaryTreeSet」や「hashTableSet」よりも読みやすく理解しやすい名前空間の使用を強くお勧めします。名前空間は、キー スペースのより洗練された自然な命名法であり、グループ化された大文字の単語の文字列よりもはるかに読みやすくなっています。
今ではそれは合理的に聞こえます。しかし、SPeLの時点で、競合が発生します。Ozzy は Black Sabbath で演奏していたので、すべてのバンド メンバーに対して、次のようにbs名前空間を Bean 名に使用します。
<bean id="bs.ozzy"
class="sk.spring.idol.annotation.Instrumentalist"
p:song="Sabbath Bloody Sabbath" />
現在、SpEL を使用して曲名に値を挿入する予定の Black Sabbath のメンバーがもう 1 人います。Ozzy が再生する曲は、私の新しいメンバー (Tony としましょう) も再生します。
public class Instrumentalist implements Performer {
@Value("#{bs.ozzy.song}")
private String song;
// blabla other stuff, getters setters and so on
}
今、私が得るものは...
Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Field or property 'bs' cannot be found on object
今何?「これは Bean 名であり、これをプロパティとして評価しない」というテキストをエスケープする方法はありますか?
ノート:
- コード サンプルは、Dhanji の本に触発されています。
- 告白します-SpELのドキュメント全体を読んでいません。おそらく解決策ははるかに簡単です