SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
<bean> @Autowired
                               and @Bean
                                                                              Alef Arendsen




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Prologue




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
4
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
5
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Imagine


                 •       A big pile of car parts
                 •       Workers running around uncontrollably
                 •       The parts don’t connect at all
                 •       Creating cars is all done by hand

                 • That’s what manufacturing was like
                   before Henry Ford introduced the
                   assembly line!


                                                                                                                               6
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
The Model T was the first
           automobile mass produced on
           assembly lines with completely
           interchangeable parts...
                                                                    By 1914, the assembly
                                                                    process for the Model T
                                                                    had been so streamlined
                                                                    it took only 93 minutes to
                                                                    assemble a car.
                                                                                                                     Source: Wikipedia

                                                                                                                               7
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Comparison criteria


                 •       Verbosity
                 •       Type safety
                 •       (Opportunity for) tool support
                 •       Solution for dealing with ambiguity




                                                                                                                     8
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Part I
                                                                                  <bean>




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Spring Sucks!?


        • Spring == XML
        • XML == Evil
        • Evil == Sucks

        • Therefore, Spring == Sucks?




                                                                                                                     Shamelessly stolen from Craig Walls

                                                                                                                                                10
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
CarPlant                                                      CarAssemblyLine




                                                                                                                          Part
                                      CarPartInventory




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Benefits of XML configuration


                 • Easy for tooling to generate graphs
                 • Central location for all config data
                 • Configuration separate from Java code
                   only option for code you don’t control
                 • Easy solution for ambiguity




                                                                                                                     13
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Drawbacks of XML
                                                                                                 configuration

                 • Perceived XML hell (partially true)
                 • Lack of type safety (at compile time)
                    – Tooling helps us a bit here
                 • Less refactoring friendly
                 • Names needed to solve ambiguity




                                                                                                                     14
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Part II
                          @Autowired and <bean>




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
@Component


          • Candidate for auto-detection

      @Component
      public class HibernateCarPartsInventory
        implements CarPartsInventory {

                            private SessionFactory sessionFactory;
      ...
      }

      <context:component-scan base-package=quot;com.carplantquot;/>




                                                                                                                        16
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
@Autowired



          • Constructor
          • Field
          • Property

                  @Autowired
                  public HibernateCarPartsInventory(
                                   SessionFactory factory) {
                       this.sessionFactory = factory;
                  }



                                                                                                                           17
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
CarPlant                                                      CarAssemblyLine




                                                                                                                          Part
                                      CarPartInventory




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Benefits of @Autowired-based
                                                                            approach

                 • ‘Config’ code in the Java code
                 • More type safe experience
                 • Elegant annotation-based solution for
                   solving ambiguity (requires XML)
                 • Less verbose




                                                                                                                     19
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Drawbacks of @Autowired-
                                                                             based approach

                 • ‘Config’ code in the Java code
                 • Extra (sometimes complex) measures
                   needed for solving ambiguity




                                                                                                                     20
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Part III
                                            @Bean and <bean>




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
@Configuration



          • On type-level
          • Identifies a class as a configuration class
          • @Bean methods represent beans

                           @Configuration
                           public class MyConfig {

                                   public @Bean Service service() {
                                     return new Service();
                                   }
                           }

                                                                                                                       22
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
@ExternalBean



          • Method-level
          • Identifies a method returning an external bean


    public abstract @ExternalBean DataSource dataSource();




                                                                                                                      23
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
CarPlant                                                      CarAssemblyLine




                                                                                                                          Part
                                      CarPartInventory




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Benefits of @Bean-based
                                                                                     approach

                 • ‘Config’ code completely separate from
                   Java code
                 • Entirely type safe approach
                 • Easy solution for ambiguity problem
                 • Allows for context inheritance
                 • Allows for 100% of all Java constructs




                                                                                                                     25
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Drawbacks of @Bean-based
                                                                               approach

                 • Harder to make it work in tooling
                 • Requires a little bit more code




                                                                                                                     26
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Conclusion




Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Conclusion


                 • There’s something for everyone in Spring
                 • Type safe and separate configuration
                           – JavaConfig (@Bean)
                 • Type safe and config in Java code
                           – @Autowired / @Component
                 • For external code and XML fans
                           – <bean/>
                 • For specification-minded people
                           – EJB 3
                 • For Google fans
                           – Guice ;-)

                                                                                                                              28
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Conclusion


                 • All three approaches build on Spring’s
                   proven and solid foundation
                   – Just mix and match all approaches
                   – A moving model, not a fixed static
                     snapshot of the current state of union
                 • Plus all the other benefits
                   – Easy JMX exporting
                   – Ease AOP configuration


                                                                                                                              29
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.

Mais conteúdo relacionado

Mais de Stephan Janssen

Mais de Stephan Janssen (15)

The new Voxxed websites with JHipster, Angular and GitLab
The new Voxxed websites  with JHipster, Angular and GitLabThe new Voxxed websites  with JHipster, Angular and GitLab
The new Voxxed websites with JHipster, Angular and GitLab
 
Java, what's next?
Java, what's next?Java, what's next?
Java, what's next?
 
Programming 4 kids
Programming 4 kidsProgramming 4 kids
Programming 4 kids
 
Devoxx2011 timesheet day3-4-5
Devoxx2011 timesheet day3-4-5Devoxx2011 timesheet day3-4-5
Devoxx2011 timesheet day3-4-5
 
Devoxx2011 timesheet day1-2
Devoxx2011 timesheet day1-2Devoxx2011 timesheet day1-2
Devoxx2011 timesheet day1-2
 
EJB 3.1 by Bert Ertman
EJB 3.1 by Bert ErtmanEJB 3.1 by Bert Ertman
EJB 3.1 by Bert Ertman
 
BeJUG JAX-RS Event
BeJUG JAX-RS EventBeJUG JAX-RS Event
BeJUG JAX-RS Event
 
Whats New In Java Ee 6
Whats New In Java Ee 6Whats New In Java Ee 6
Whats New In Java Ee 6
 
Glass Fishv3 March2010
Glass Fishv3 March2010Glass Fishv3 March2010
Glass Fishv3 March2010
 
Advanced Scrum
Advanced ScrumAdvanced Scrum
Advanced Scrum
 
Scala by Luc Duponcheel
Scala by Luc DuponcheelScala by Luc Duponcheel
Scala by Luc Duponcheel
 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
 
Kick Start Jpa
Kick Start JpaKick Start Jpa
Kick Start Jpa
 
BeJUG - Spring 3 talk
BeJUG - Spring 3 talkBeJUG - Spring 3 talk
BeJUG - Spring 3 talk
 
BeJug.Org Java Generics
BeJug.Org   Java GenericsBeJug.Org   Java Generics
BeJug.Org Java Generics
 

Último

Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdfPaige Cruz
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"DianaGray10
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5DianaGray10
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideHironori Washizaki
 

Último (20)

Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
 

BeJUG - Di With Spring

  • 1. <bean> @Autowired and @Bean Alef Arendsen Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 2. Prologue Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 3. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 4. 4 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 5. 5 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 6. Imagine • A big pile of car parts • Workers running around uncontrollably • The parts don’t connect at all • Creating cars is all done by hand • That’s what manufacturing was like before Henry Ford introduced the assembly line! 6 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 7. The Model T was the first automobile mass produced on assembly lines with completely interchangeable parts... By 1914, the assembly process for the Model T had been so streamlined it took only 93 minutes to assemble a car. Source: Wikipedia 7 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 8. Comparison criteria • Verbosity • Type safety • (Opportunity for) tool support • Solution for dealing with ambiguity 8 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 9. Part I <bean> Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 10. Spring Sucks!? • Spring == XML • XML == Evil • Evil == Sucks • Therefore, Spring == Sucks? Shamelessly stolen from Craig Walls 10 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 11. CarPlant CarAssemblyLine Part CarPartInventory Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 12. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 13. Benefits of XML configuration • Easy for tooling to generate graphs • Central location for all config data • Configuration separate from Java code only option for code you don’t control • Easy solution for ambiguity 13 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 14. Drawbacks of XML configuration • Perceived XML hell (partially true) • Lack of type safety (at compile time) – Tooling helps us a bit here • Less refactoring friendly • Names needed to solve ambiguity 14 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 15. Part II @Autowired and <bean> Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 16. @Component • Candidate for auto-detection @Component public class HibernateCarPartsInventory implements CarPartsInventory { private SessionFactory sessionFactory; ... } <context:component-scan base-package=quot;com.carplantquot;/> 16 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 17. @Autowired • Constructor • Field • Property @Autowired public HibernateCarPartsInventory( SessionFactory factory) { this.sessionFactory = factory; } 17 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 18. CarPlant CarAssemblyLine Part CarPartInventory Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 19. Benefits of @Autowired-based approach • ‘Config’ code in the Java code • More type safe experience • Elegant annotation-based solution for solving ambiguity (requires XML) • Less verbose 19 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 20. Drawbacks of @Autowired- based approach • ‘Config’ code in the Java code • Extra (sometimes complex) measures needed for solving ambiguity 20 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 21. Part III @Bean and <bean> Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 22. @Configuration • On type-level • Identifies a class as a configuration class • @Bean methods represent beans @Configuration public class MyConfig { public @Bean Service service() { return new Service(); } } 22 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 23. @ExternalBean • Method-level • Identifies a method returning an external bean public abstract @ExternalBean DataSource dataSource(); 23 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 24. CarPlant CarAssemblyLine Part CarPartInventory Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 25. Benefits of @Bean-based approach • ‘Config’ code completely separate from Java code • Entirely type safe approach • Easy solution for ambiguity problem • Allows for context inheritance • Allows for 100% of all Java constructs 25 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 26. Drawbacks of @Bean-based approach • Harder to make it work in tooling • Requires a little bit more code 26 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 27. Conclusion Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 28. Conclusion • There’s something for everyone in Spring • Type safe and separate configuration – JavaConfig (@Bean) • Type safe and config in Java code – @Autowired / @Component • For external code and XML fans – <bean/> • For specification-minded people – EJB 3 • For Google fans – Guice ;-) 28 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 29. Conclusion • All three approaches build on Spring’s proven and solid foundation – Just mix and match all approaches – A moving model, not a fixed static snapshot of the current state of union • Plus all the other benefits – Easy JMX exporting – Ease AOP configuration 29 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.