hogepiyoエンジニアリング

トラブルシューティングからノウハウ、作ってみた系まで扱う情報系ブログ

Springでアノテーションを使ってプロパティファイルを読み込む

調べてもパッと出て来なかったので忘備録

ただし、結局プロパティの読み込みはアノテーションよりもXMLのほうで読み込んだ方がわかりやすいかも.
とはいいつつ、わからないのが気持ち悪いので一応書く.

@Configuration
@PropertySource("classpath:parameter.properties") //プロパティファイルの読み込み
public class User {

	@Autowired
	private Environment env; //読み込んだプロパティの結果が格納される

	public void speak() {
		System.out.println("こんにちは" + env.getProperty("name") + "です"); //プロパティのキーを指定(この場合は"name"がキー)して値を取得
	}
}

こんな感じ.

knife-soloをUbuntuにインストールする

基本的にドットインストールの動画通りだけど、chef-soloのインストールで詰まったのでメモ.

まず、chefを https://learnchef.opscode.com/quickstart/workstation-setup/#linux を参考にインストールする

$sudo gem install knife-solo
Fetching: mixlib-config-1.1.2.gem (100%)
Fetching: mixlib-cli-1.3.0.gem (100%)
Fetching: mixlib-log-1.6.0.gem (100%)
Fetching: mixlib-authentication-1.3.0.gem (100%)
Fetching: mixlib-shellout-1.2.0.gem (100%)
Fetching: systemu-2.5.2.gem (100%)
Fetching: yajl-ruby-1.1.0.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing knife-solo:
        ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load suc                      h file -- mkmf (LoadError)
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from extconf.rb:1:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/yajl-ruby-1.1.0 for                       inspection.
Results logged to /var/lib/gems/1.9.1/gems/yajl-ruby-1.1.0/ext/yajl/gem_make.ou                      t

あ?
requireされているmkmfがないらしい。

$ sudo apt-get install make
$ sudo gem install knife-solo
Building native extensions.  This could take a while...

省略

Installing RDoc documentation for knife-solo-0.2.0...
$ knife -v
Chef: 11.6.0

入ったぽい。めでたし。

svnでコミット時にinternal Server Errorがでるときの対処

個人用のsvnをたててみようとしたらコミット時にinternal Server Errorが出て困った
一応解決したので、そのときの対処法をメモ

まずエラーが出るまでの道順が以下

リポジトリを作成してから

$ sudo svnadmin create /var/svn/repository

適当なディレクトリにチェックアウトする

$ svn checkout http://sample.com/svn/repository/ repository

次に適当にディレクトリを追加してコミットするとエラーがでる

$ cd repository/
$ svn mkdir testdir
$ svn -m "test commit" commit
svn: E175002: Commit failed (details follow):
svn: E175002: Server sent unexpected return value (500 Internal Server Error) in response to POST request for '/svn/repository/!svn/me


以下解決法

まず、原因はパーミッション

svnのコミットはapache経由で行ってるっぽい

svnの設定でweb-davを使うようにしてるからだと思うが

なので、svnリポジトリの所有者をapacheの実行ユーザにする必要がある

今回の場合は、リポジトリにしているのが /var/svn/repository なので

/var/svn/repositoryの所有者をapacheの実行ユーザ(www-data)に変えて

$ sudo chown -R www-data:www-data /var/svn/repository/

再びコミットに挑戦してみるとコミットできる

$ svn -m "test commit" commit
Adding         testdir

Committed revision 1.

めでたしめでたし