14

私はSpring MVC 3アノテーションベースのアプリケーションに非常に慣れていません。WEB-INF\resources\general.properties、WEB-INF\resources\jdbc_config.properties の 2 つのプロパティ ファイルがあります。

ここで、spring-servlet.xml を使用してそれらを構成したいと思います。どうすればこれを達成できますか?

general.properties では、

label.username = User Name:
label.password = Password:
label.address = Address:

...etc jdbc_config.properties、

app.jdbc.driverClassName=com.mysql.jdbc.Driver
app.jdbc.url=jdbc:mysql://localhost:[port_number]/
app.jdbc.username=root
app.jdbc.password=pass

- -等

JSP ページで label.username と app.jdbc.driverClassName を取得したい場合、どのようにコーディングすればよいですか?

また、サービスからこれらのプロパティ値にアクセスしたいと考えています。サービスクラスまたはコントローラークラスのメソッドレベルでそれぞれのキーを使用してこれらのプロパティ値を取得する方法は?

4

3 に答える 3

17

アプリケーションのプロパティ (構成) とローカリゼーション メッセージを区別する必要があります。どちらも JAVA プロパティ ファイルを使用しますが、異なる目的を果たし、異なる方法で処理されます。

注:以下の例では、Java ベースの Spring 構成を使用しています。構成は XML でも簡単に作成できます。Spring のJavaDocリファレンス ドキュメントを確認してください。


アプリケーションのプロパティ

アプリケーション プロパティは、アプリケーション コンテキスト内のプロパティ ソースとしてロードする必要があります。これは、クラス@PropertySourceの注釈を介して行うことができます。@Configuration

@Configuration
@PropertySource("classpath:default-config.properties")
public class MyConfig  {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

}

@Value次に、アノテーションを使用してプロパティを注入できます。

@Value("${my.config.property}")
private String myProperty;

ローカリゼーション メッセージ

ローカリゼーション メッセージは、少し話が異なります。メッセージはリソース バンドルとしてロードされ、指定されたロケールの正しい翻訳メッセージを取得するための特別な解決プロセスが用意されています。

Spring では、これらのメッセージはMessageSourcesによって処理されます。たとえば、次の方法で独自に定義できますReloadableResourceBundleMessageSource

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("/WEB-INF/messages/messages");
    return messageSource;
}

Spring に注入させると、Bean からこれらのメッセージにアクセスできますMessageSource

@Autowired
private MessageSource messageSource;

public void myMethod() {
    messageSource.getMessage("my.translation.code", null, LocaleContextHolder.getLocale());
}

<spring:message>また、次のタグを使用して、JSP 内のメッセージを翻訳できます。

<spring:message code="my.translation.code" />
于 2013-07-01T20:20:40.233 に答える
4

最終的に環境を使用しました

これらの行を構成に追加します

@PropertySource("classpath:/configs/env.properties")
public class WebConfig extends WebMvcConfigurerAdapter{...}

autowired Environment を使用してコントローラーからプロパティを取得できます

public class BaseController {
    protected final Logger LOG = LoggerFactory.getLogger(this.getClass());

    @Autowired
    public Environment env;

    @RequestMapping("/")
    public String rootPage(ModelAndView modelAndView, HttpServletRequest request, HttpServletResponse response) {
        LOG.debug(env.getProperty("download.path"));
        return "main";
    }
}
于 2014-04-29T08:22:59.157 に答える