-
クラスパスリソースとしてmessages.propertiesファイルを追加する方法:
- プロジェクトのリソースディレクトリ(通常は/src/main/resources)にmessages.propertiesファイルを作成します。
- メッセージファイルに必要なキーと値を追加します。例えば、"error.accessDenied=アクセスが拒否されました"といった形式です。
-
Spring Securityでmessages.propertiesファイルを使用する方法:
- WebSecurityConfigurerAdapterクラスを拡張した設定クラスを作成します。
- configure(HttpSecurity http)メソッド内で、messageSource()メソッドを使用してメッセージソースを設定します。
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .exceptionHandling() .accessDeniedPage("/access-denied") .and() .headers().frameOptions().disable() .and() .formLogin() .and() .logout(); } @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasename("messages"); return messageSource; } }
- 上記の例では、messageSourceメソッドでResourceBundleMessageSourceクラスを使用してメッセージソースを設定しています。basename("messages")の部分は、クラスパス上のmessages.propertiesファイルを指定しています。
-
メッセージの利用方法:
- Spring Securityのコンポーネント(例えば、カスタムエラーページ)でメッセージを表示するには、MessageSourceクラスを@Autowiredアノテーションを使用してインジェクトします。
@Controller public class MyController { @Autowired private MessageSource messageSource; @GetMapping("/access-denied") public String accessDenied(Model model, Locale locale) { String errorMessage = messageSource.getMessage("error.accessDenied", null, locale); model.addAttribute("errorMessage", errorMessage); return "access-denied"; } }
- 上記の例では、MessageSourceクラスのgetMessageメソッドを使用して、"error.accessDenied"キーに対応するメッセージを取得しています。
以上が、Spring Securityでmessages.propertiesファイルをクラスパスに追加し、それを利用する方法の概要です。これにより、アプリケーション内の異なる箇所で一貫したメッセージを管理できます。