クラスパスのURLをBeanのSpringに依存しない方法で挿入したいと思います。つまり、BeanはSpringのインターフェース/クラスを使用すべきではありません。どうやってやるの?Spring:クラスパスリソースのURLを挿入してください
答えて
春は暗黙のうちにjava.net.URL
にclasspath:...
値を変換することができます:
public class Foo {
private URL url;
...
}
。
<bean class = "Foo">
<property name = "url" value = "classpath:..." />
</bean>
原因:org.springframework.core.convert.ConversionFailedException:値 "classpath:etc/warmup.xml"をタイプ 'java.lang.String'から 'java.net.URL'に変換することができません。ネストされた例外はjava.net.MalformedURLExceptionです:unknown protocol:classpath – IttayD
@IttayD:Spring 3.0.2でうまく動作します。パスは既存のリソースを指している必要があることに注意してください。 – axtavt
私は春3.0.4を持っています。私は春のソースコードを見て、それが "classpath"を扱う場所を見ることができません。私が見ていることから、URLに変換しようとする。私は "classpath"のURLStreamHandler実装を見つけることができません – IttayD
Spring's resource conceptに相当するものはほとんどありません。
たとえば、GuavaのInputSupplierを代わりに使用できますが、そうした場合は強力な標準の春の機能がありません。
MyClasspathResourceのようにorg.springframework.core.io.ClassPathResourceを拡張してSpringリソースを独自に作成すると、ClassPathResourceが拡張され、この型がBeanに挿入されます。このように、あなたは春に依存することなく、後であなたのリソースを他のものと再実装することができます。
あなたが自分で豆春の注釈を許可する場合、あなたはこのようにそれを行うことができ、axtavtの答えに続き<bean class="myBean">
<property name="classPathType">
<bean class="org.test.bla.MyClasspathResource">
<constructor-arg index="0" value="classpath:/org/test/bla/MyUrl" />
</bean>
</property>
</bean>
:
@Value("classpath:myClasspathLocation") private URL url;
- 1. URLに基づいてクロムブラウザの拡張コンテンツスクリプトを挿入してください
- 2. クラスパスリソースをSpring 3 Beanに注入
- 3. jQueryの入力をURLで入力してください。
- 4. MySQLテーブルにまだ挿入されていない場合は挿入してください。
- 5. cURLスクリプト$ urlに入力値を入力してください
- 6. struts2のパラメータにJavaScriptの値を挿入してください
- 7. javafxを使ってデータベースに挿入してください。
- 8. チェックボックス(ListView)の値をデータベースに挿入してください
- 9. 私のユーザフォームに図形を挿入してください
- 10. glassfishのCDI pojoでサーブレットオブジェクトを挿入してください
- 11. コマンドの結果をvimコマンドに挿入してください
- 12. 複合キーのハイバネートを挿入してください
- 13. MVCのhtmlタグに値を挿入してください
- 14. ファイルアップロード用のcsrfトークンを挿入してください
- 15. oracle speicific欠損値の行を挿入してください
- 16. Java/Spring:初期ユーザーデータを入力してください
- 17. Spring Kafkaシリアライザ/デシリアライザにObjectMapperを注入してください
- 18. Emberコントローラから{{#リンク先}を挿入してください。
- 19. WordPress MySQL変換を挿入してください
- 20. ID列に値0を挿入してください。
- 21. getelementptr命令を挿入してください
- 22. mongodbにpythonオブジェクトを挿入してください
- 23. using c#CSVファイルをデータベースマッピングカラムに挿入してください。
- 24. Java:テストするシングルトンBeanを挿入してください
- 25. VBAでセルにVLOOKUPを挿入してください
- 26. CKEditorにローカルビデオを挿入してください
- 27. 重複キーを挿入、選択してください
- 28. .txtファイルに値を挿入してください
- 29. wordpressにhtmlとjavascriptを挿入してください
- 30. アンドロイド:strings.xmlからスピナーを挿入してください
あなたはまさに、「URL」とはどういう意味ですか?これはクラスパスリソースを持つ人工的な概念です。あなたはそのURLで何をしますか? – skaffman
ストリームを開き、そこから読み取る – IttayD
クラスパスリソースの場合は、パス自体を注入しないでください。 Springリソース抽象化では、使用しない場合はほとんど価値がありません。 – skaffman