framework 入門
なんとなしに springframework を使ってみた。
ubuntu だと springide とかはあるみたいだけど、ライブラリ自体があるのか謎だったし、あたらしめがいいだろうと思って、公式から 2.5 を落としてインストした。
インストール自体は結構簡単というか、バイナリファイルが存在するので公式から単純に zip ファイルをダウンロードするだけ。
http://www.springframework.org/
んで適当なところに解凍したら dist 以下にある spring.jar を CLASSPATH に入れておけばいいみたい。ちなみに自分はプロジェクトの lib の下にコピーしておいて build.xml に設定しておいた。
なんか依存ライブラリはあるみたいだけど、とりあえず自分の環境だと apache logging パッケージが無いとか言われたので apt でとりあえず導入
% sudo aptitude install libcommons-logging-java % cp /usr/share/java/commons-logging-1.1.jar lib
後は、こんな感じのソースを書いておくと
import org.springframework.core.io.ClassPathResource; import org.springframework.beans.factory.xml.XmlBeanFactory; public class Main { public static void main(String[] args) { XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); Person p = (Person)factory.getBean("japanese"); System.out.println(p.hello()); p = (Person)factory.getBean("english"); System.out.println(p.hello()); } }
% java -jar hello.jar [~/src/java/spring/hello] log4j:WARN No appenders could be found for logger (org.springframework.beans.factory.xml.XmlBeanDefinitionReader). log4j:WARN Please initialize the log4j system properly. こんにちわ hello
こんな感じで spring が動いてるのが分かるみたい。
自前で Factory のコード書かなくてもよいってのはちょっといいなーとは思うんだけど、やっぱり xml ファイルに記述するってのも少し面倒くさいな。
とりあえずもうちょっといじってみたいなー
以下残りのソース
Person.java
package org.hilib.hello; public interface Person { public String hello(); }
PersonImpl.java
package org.hilib.hello; public class PersonImpl implements Person { private String helloMsg; public PersonImpl() { helloMsg = null; } @Override public String hello() { return helloMsg; } public void setHelloMsg(String msg) { helloMsg = msg; } }
applicationContext.xml
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="japanese" class="org.hilib.hello.PersonImpl"> <property name="helloMsg" value="こんにちわ"/> </bean> <bean id="english" class="org.hilib.hello.PersonImpl"> <property name="helloMsg" value="hello"/> </bean> </beans>