いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

メモとSeasar2について

Seasar2の本を購入しました。Seasar入門 はじめてのDI&AOP
なかなか読む時間がとれないですが、よくできてるな〜Seasar。すごい使いやすい。
OGNLが使用できるのがいいですね。TapestryもOGNLで記述するので。
設定ファイル(diconファイル)を書くのがSpringに比べてすごく楽。

こんなんをサンプルでつくったりしてるんですが、こういうのはあまりやらない
ことなんですかね〜。SwingとかでSeasar使ったらすごい効率がいいと思うのですが。

<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE components PUBLIC
    "-//SEASAR//DTD S2Container 2.3//EN"
    "http://www.seasar.org/dtd/components23.dtd">

<components>

    <include path="gsf/samples/seasar2/sample001/components/sample001-2.dicon"/>

    <component name="myMainWindow" class="javax.swing.JFrame">
        <property name="title">"Swing With Seasar2"</property>
        <property name="defaultCloseOperation">@javax.swing.JFrame@EXIT_ON_CLOSE</property>
        <initMethod>#self.setSize(400, 200)</initMethod>
        <property name="contentPane">myContentPane</property>
    </component>

</components>
<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE components PUBLIC
    "-//SEASAR//DTD S2Container 2.3//EN"
    "http://www.seasar.org/dtd/components23.dtd">

<components>

    <component name="myFont" class="java.awt.Font">
        <arg>"Dialog"</arg>
        <arg>@java.awt.Font@PLAIN</arg>
        <arg>24</arg>
    </component>

    <component name="myFontForTextField" class="java.awt.Font">
        <arg>"Monospaced"</arg>
        <arg>@java.awt.Font@BOLD</arg>
        <arg>30</arg>
    </component>

    <component name="myLabel" class="gsf.samples.seasar2.sample001.components.MyLabel">
        <property name="text">"Swing On Sesar2!!"</property>
        <property name="font">myFont</property>
        <property name="foreground">@java.awt.Color@WHITE</property>
    </component>

    <component name="myTextField" class="javax.swing.JTextField">
        <property name="text">"Swing On Seasar2!!"</property>
        <property name="font">myFontForTextField</property>
        <property name="caretPosition">0</property>
    </component>

    <component name="myTable" class="gsf.samples.seasar2.sample001.components.MyTable">
    </component>

    <component name="myContentPane" class="javax.swing.JPanel">
        <property name="layout">new java.awt.BorderLayout()</property>
        <property name="background">@java.awt.Color@BLACK</property>
        <initMethod>#self.add(myLabel,     @java.awt.BorderLayout@NORTH)</initMethod>
        <initMethod>#self.add(myTable,     @java.awt.BorderLayout@CENTER)</initMethod>
        <initMethod>#self.add(myTextField, @java.awt.BorderLayout@SOUTH)</initMethod>
    </component>

</components>
package gsf.samples.seasar2.sample001;

import javax.swing.*;

import org.seasar.framework.container.*;
import org.seasar.framework.container.factory.*;

public class SwingOnSeasar2{

    private static final String DICON_PATH = "gsf/samples/seasar2/sample001/sample001.dicon";

    public static void main(String[] args){

        final S2Container container = S2ContainerFactory.create(DICON_PATH);

        javax.swing.SwingUtilities.invokeLater(new Runnable(){
            public void run(){

                JFrame window = (JFrame) container.getComponent("myMainWindow");
                window.setVisible(true);

            }
        });
    }
}

S2Containerはinit()しなくても動くみたいだけど、したほうがいいのかな。