私のSpring 3.0アプリケーションでは、私は/WEB-INF/dir
にいくつかのリソースを持っています。実行時に私はInputStream
(または他のタイプ)としてそれらのいくつかを必要とします。どうすればそれらを取得できますか?通常のように注入することは可能ですかResource
?春3.0はリソースとしてファイルを注入します
答えて
は注釈を経由してそれを行うための最も簡単な方法です:
import org.springframework.core.io.Resource;
@Value("classpath:<path to file>")
private Resource cert;
あなたが使用することができるはずです:
appContext
は、あなたの春
ApplicationContext
ある
Resource resource = appContext.getResource("classpath:<your resource name>");
InputStream is = resource.getInputStream();
' Resource'インターフェースは 'getInputStream()'メソッドを宣言していないので、 'new FileInputStream(resource.getFile())'を呼び出す必要があります。 –
これは間違っています。 'Resource'はそれを' org.springframework.core.io.InputStreamSource'インターフェースから継承します – Saket
私の悪い、申し訳ありませんが、 'implements'を見ませんでした。 –
あなたは春の依存性を導入しない場合(具体的には、WebApplicationContext、あなたはWebアプリケーションを持っているので) Populate Spring Bean's File field via Annotation
私は、その質問に対する答えがSpringへの依存度の低下をどのようにもたらすのか見当たりません。 –
@Valueの使用はゼロのスプリング依存性ではないことに同意します。 –
しかし、注釈は、反復自己の原則に違反することなく春の噴射を達成するための最良の方法です。推奨するXMLアプローチは、あなた自身を繰り返すことを強いられます。遅かれ早かれ、誰かがJavaファイル内のプロパティ名を変更し、Spring Bean定義ファイルを更新することを忘れてしまいます。 –
すべてApplicationContext
は、定義上、ResourceLoader
です。これは、構成内で見つかったすべてのリソース文字列を解決できることを意味します。これを念頭に置いて、org.springframework.core.io.Resource
を受け入れるセッターでターゲットBeanを宣言できます。次に、ターゲットBeanをコンフィグレーションするときは、プロパティの値にリソースパスを使用します。 Springはコンフィグレーション内のString
の値をResource
に変換しようとします。
public class Target {
private Resource resource;
public void setResource(final Resource resource) {
this.resource = resource;
}
}
//configuration
<beans>
<bean id="target" class="Target">
<property name="resource" value="classpath:path/to/file"/>
</bean>
</beans>
ここでは、クラスパスリソースを取得するための完全な例を示します。私はJavaクラスに格納したくない、本当に複雑なクエリ持っているSQLファイルをつかむためにそれを使用します。ここでは
public String getSqlFileContents(String fileName) {
StringBuffer sb = new StringBuffer();
try {
Resource resource = new ClassPathResource(fileName);
DataInputStream in = new DataInputStream(resource.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
sb.append(" " + strLine);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
- 1. TomcatサーブレットとしてJAX-RS(Jersey)リソースにシングルトンを注入
- 2. 春ブーツは、私が使用してアクセスされたリソース上のファイルと春ブートプロジェクトましHerokuの
- 3. サーブレット3.0とリソース
- 4. 春のPOJO注入CDIと似ています
- 5. 春の注入とオブジェクトのインスタンス化
- 6. 春@ConfigurationPropertiesが何かを注入していない、フィールドが
- 7. 春の依存性注入
- 8. 春:セッター依存性注入
- 9. 春3.0 MVCはmessages.properties
- 10. 春@Configurationファイルが@value注釈
- 11. 春@valueプロパティファイルなしで値を注入する
- 12. :春MVCで3.0
- 13. 春のMVCでの取引と私は春のMVC 3.0を使用し、休止してい
- 14. Shiro注釈春と
- 15. 春とJsonTypeInfo注釈
- 16. 春の注釈 - 注釈に関する文書を取得しています
- 17. 春 - 一般的な豆を注入
- 18. 注釈を介した注入とSpringのXMLファイルを介する注入継承に関する制限
- 19. プロパティインジェクションは、春の一種の依存性注入ですか?上記に示した、プロパティ "MSG" として
- 20. ActionScript 3.0のファイルを見つけようとしています
- 21. Javaの春3.0 MVC
- 22. 親と子の春のリソース
- 23. Guiceのフィールドを注入したJerseyリソースのユニットのテスト
- 24. NinjectでIKernelをプロパティとして注入
- 25. 春の自動依存性注入
- 26. 春の依存性注入サイクル
- 27. 春の依存性注入のシナリオ
- 28. 春のブートコンストラクタベースの依存性注入
- 29. 注釈を付けた春の独特の注入
- 30. TalendでリソースとしてExcelファイルをインポート
これはかなりクールです! – Kong
ディレクトリはどのようにロードできますか?たとえば、25個のファイルを含むディレクトリ "dir" –
これはかなりクールですが、jarファイル内では機能しない可能性があります。 –