15

この質問を投稿する前に、Google で Spring プロジェクト (Web ベースのプロジェクトではない) からプロパティを取得します。誰もがapplication-context.xmlについて話し、次のような構成を持っているので、私は混乱しています

ただし、私はSpringを使用した通常のJavaプロジェクトに取り組んでいます(Webアプリなどはありません)。しかし、プロパティファイルからいくつかの共通プロパティを取得したいと思います.JAVAファイルで使用する必要があります. Spring/Spring Annotations を使用してこれをどのように達成できますか?

プロジェクトの下で myprops.properties ファイルを構成する必要がある場所と、Spring を介して呼び出す方法を教えてください。

私の理解では、application-context.xml は Web ベースのプロジェクトにのみ使用されます。そうでない場合、application-context.xmlを定義するためのweb.xmlがないため、このapplication-context.xmlをどのように構成する必要がありますか

4

5 に答える 5

25

次のようなXMLベースのアプリケーションコンテキストを作成できます。

ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");

xmlファイルがクラスパスにある場合。または、ファイルシステム上のファイルを使用することもできます。

ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");

詳細については、Springリファレンスドキュメントを参照してください。正常なシャットダウンを確実にするために、シャットダウンフックも登録する必要があります。

 ctx.registerShutdownHook();

次に、PropertyPlaceHolderConfigurerを使用して、「。properties」ファイルからプロパティを抽出し、それらをBeanに注入できます。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="classpath:com/foo/jdbc.properties"/>
</bean>

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

最後に、アノテーションベースの設定が必要な場合は、@Valueアノテーションを使用してプロパティをBeanに挿入できます。

@Component
public class SomeBean {

    @Value("${jdbc.url}") 
    private String jdbcUrl;
}
于 2013-01-28T20:26:57.883 に答える
4

Spring を使用する必要はありません。次のようにプレーンなJavaで読むことができます:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));
于 2013-09-13T09:07:54.737 に答える
0

あなたのプロジェクトがアプリ全体でどのように使用されるかを理解できますか? プロジェクトが Web アプリのビルド パスとして使用され、プロジェクトの構成が Spring アノテーションによって実現されている場合、ファイルを追加する方法に戸惑うことは間違いありませんapplication.xml。私の提案は、あなたのプロジェクトを使用する人を発表し、必要なものを伝え@Value("${valuename}")、コードを追加するだけでよいということです。

于 2013-07-22T10:08:43.400 に答える