Thanks a lot for taking the time to explain it.  That helps quite a bit.

Ricardo


On Apr 7, 2012, at 11:07 PM, Henrique Prange wrote:

> Hi Ricardo,
> 
> WOInject is a framework that enables dependency injection in WebObjects 
> applications by integrating the Guice framework.
> 
> OK. It doesn't help much. :) I'm not sure about the level of knowledge you 
> have about DI or Guice. So, here is a list of the topics you should know to 
> understand what WOInject can do for you. You can skip the topics you are 
> already familiar with.
> 
> 1) What is dependency injection?
> 
> You can learn the theory behind dependency injection and inversion of control 
> containers in the Martin Fowler article [1] about the subject.
> 
> 2) What is Guice?
> 
> I think the Motivation page [2] on the Guice's User Guide is the best place 
> to start understanding the basic problems, and the solutions proposed by 
> Guice.
> 
> 3) What is WOInject?
> 
> WOInject is just a framework to integrate Guice with WebObjects in a 
> non-intrusive manner. So, what Guice can do for you?
> 
> Suppose you have a Service interface and a BasicService implementation for 
> it. This Service is required across your components. So you have something 
> like this:
> 
> class ComponentOne {
>       Service service = new BasicService();
> }
> 
> class ComponentTwo {
>       Service service = new BasicService();
> }
> 
> ...
> 
> Then, the project evolves, and you develop a new AdvancedService 
> implementation for the Service interface. You have to traverse the entire 
> code base updating the instantiation of Service.
> 
> On the other hand, if you use Guice, you can delegate the creation of 
> Services to Guice, and inject the instances of Service when required. You 
> write code like this:
> 
> class ComponentOne {
>       @Inject
>       Service service;
> }
> 
> class ComponentTwo {
>       @Inject
>       Service service;
> }
> 
> ...
> 
> And you configure a Guice Module to specify that you want an instance of 
> BasicService (or an AdvancedService) when you need a Service.
> 
> class AppModule extends AbstractModule {
>       void configure() {
>               bind(Service.class).to(BasicService.class);
>       }
> }
> 
> If you need to change the implementation class, you just have to redefine 
> your module:
> 
> class AppModule extends AbstractModule {
>       void configure() {
>               bind(Service.class).to(AdvancedService.class);
>       }
> }
> 
> This is a basic example of what Guice (and dependency injection) can do for 
> you. Real-world problems are much more complex. A Service implementation may 
> require a Connection that needs a URL and Credentials to work. Guice can 
> handle the entire hierarchy of dependencies for you. 
> 
> Of course, Guice can do a lot more for you. I'm still preparing a few use 
> cases for the WOInject's User Guide to demonstrate situations where 
> dependency injection is helpful and other Guice's features that make it so 
> powerful. 
> 
> [1]http://martinfowler.com/articles/injection.html
> [2]http://code.google.com/p/google-guice/wiki/Motivation
> 
> Cheers,
> 
> Henrique
> 
> On 05/04/2012, at 16:17, Ricardo J. Parada wrote:
> 
>> 
>> 
>> Is there a short explanation of what it does?  Can it be explained with a 
>> code snippet or in a paragraph?
>> I still don't quite understand the concept.  :-)
>> 
>> 
>> 
>> 
>> On Apr 4, 2012, at 1:11 PM, Henrique Prange wrote:
>> 
>>> Hi Paul,
>>> 
>>> Don't get me wrong. I really appreciate the interest in WOInject. It is an 
>>> honor for me to talk on WOWODC again. I'm working hard here to make it 
>>> happen. However, I'm still not sure if I'll be able to afford the trip to 
>>> Canada. :( So, I don't want to create expectations for something I may not 
>>> be able to deliver.
>>> 
>>> Cheers,
>>> 
>>> Henrique
>>> 
>>> On 04/04/2012, at 02:02, Paul Hoadley wrote:
>>> 
>>>> On 15/03/2012, at 5:04 PM, Johann Werner wrote:
>>>> 
>>>>> Am 15.03.2012 um 07:12 schrieb ISHIMOTO Ken:
>>>>> 
>>>>>> Would be nice to see that at WOWODC in Action.
>>>>> 
>>>>> +1
>>>> 
>>>> Hey, Henrique, I didn't see a response to this—any chance you'll be at 
>>>> WOWODC 12 and in the mood for a talk/demo/workshop on WOInject?  Even 
>>>> informally?
>>>> 
>>>> 
>>>> -- 
>>>> Paul.
>>>> 
>>>> http://logicsquad.net/
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list      ([email protected])
>>>> Help/Unsubscribe/Update your Subscription:
>>>> https://lists.apple.com/mailman/options/webobjects-dev/hprange%40gmail.com
>>>> 
>>>> This email sent to [email protected]
>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/rparada%40mac.com
>>> 
>>> This email sent to [email protected]
>> 
> 


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to