プロパティ・インジェクションにより、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. |