プロパティ・インジェクションにより、DIを実施します。インスタンス変数とアクセッサメソッドがプロパティとして扱われます。 インスタンス変数プロパティの場合は、デフォルト値でインジェクションを行うコンポーネントを指定します。 プロパティ値がnilの場合、プロパティ名(Symbol)がコンポーネント名として使用されます。 プロパティ値が配列で、1番目の値が「di」の場合、2番目の値がコンポーネント名となります。 アクセッサメソッドのプロパティの場合は、attr_accessorで指定するプロパティ名がDIされるコンポーネント名となります。
require 's2container' class Action s2comp def initialize @a = nil # コンポーネント名は :a @b = :di, ServiceB # Arrayで指定 end attr_reader :a, :b attr_accessor :c end class ServiceA s2comp :name => :a end class ServiceB s2comp :instance => :prototype end class ServiceC s2comp :name => :c end p s2app[Action].a p s2app[Action].b p s2app[Action].c
NOTE | |
---|---|
この例は example/quickstart/quickstart6 にあります。 |
© Copyright The Seasar Foundation and the others 2008-2009, all rights reserved. |