Spring By Example     Oleksiy Rezchykov      Eugene Scripnik
About us Software Engineers Working with Spring since 2006 Pragmatic programmers SpringByExample.com.ua   founders    ...
Contents Intro IoC using Spring Persistence with Spring Web applications with Spring MVC                     SpringByE...
Intro What we will do today? Meet some new faces Learn some new stuff Code some new stuff                  SpringByExa...
SpringFramework            history In October 2002 Rod Johnson   wrote his famous book The first milestone release 1.0 -...
Spring in 2012   SpringByExample.com.ua                            6         @ua_spring
IoC using Spring   Buiding xml contexts   Bean scopes & lifecycles   Constructor vs Setter injection   Property placeh...
Inversion of Control Inversion of regular approach where object was   responsible for satisfying it’s own dependencies I...
IoC Pros vs Cons (to discuss)                  SpringByExample.com.ua                                           9        ...
Injection types Setter injection– when you are using setter to fulfill   bean dependency Constructor injection – when co...
CI vs SI Pro vs Cons (to discuss)                  SpringByExample.com.ua                                           11   ...
Context An object which contains beans declarations with   their dependencies BeanFactory interface implementation      ...
XML namespaces    SpringByExample.com.ua                             13          @ua_spring
ContextSpringByExample.com.ua                         14      @ua_spring
Context usage   SpringByExample.com.ua                            15         @ua_spring
Bean lifecycle Depends on scope and lazy initialization Main bean scopes: Singleton and Prototype(Also there are multipl...
Bean instantiation order        SpringByExample.com.ua                                 17              @ua_spring
Bean Post-processing                • Bean instantiated for singletons with    Beaninstantiation                  eager in...
Property Editors    SpringByExample.com.ua                             19          @ua_spring
Multiple config files      SpringByExample.com.ua                               20            @ua_spring
Bean definition inheritance    SpringByExample.com.ua                             21          @ua_spring
Inner Beans  SpringByExample.com.ua                           22        @ua_spring
Factory Method   SpringByExample.com.ua                            23         @ua_spring
Map, List, Set, Prop,        Null       SpringByExample.com.ua                                24             @ua_spring
Map, List, Set, Prop, Nul            l         SpringByExample.com.ua                                  25               @u...
Util namespace   SpringByExample.com.ua                            26         @ua_spring
Component model    SpringByExample.com.ua                             27          @ua_spring
@Autowired Spring proprietary annotation for property injection Supports @Qualifier to select implementation by   name i...
@Autowired  SpringByExample.com.ua                           29        @ua_spring
@Inject Context and Dependency Injection (CDI) standard   JSR-299                  SpringByExample.com.ua                ...
@Resource JSR 250 (Common annotations) Supports @PostConstruct and @PreDestroy as  well                 SpringByExample....
AutowiringAn appropriate bean for dependency is found through: Type Name Type and Name combination                   Sp...
Resource loading and       i18n      SpringByExample.com.ua                               33            @ua_spring
Resource loading and       i18n      SpringByExample.com.ua                               34            @ua_spring
SpEl Stands for Spring Expression Language Can be used in the xml context Can be used in bean classes                  ...
SpElSpringByExample.com.ua                         36      @ua_spring
Java Spring Config @Configuration @Bean Support for Environment and Profiles                   SpringByExample.com.ua  ...
Java Spring Config     SpringByExample.com.ua                              38           @ua_spring
Environment abstraction   & context profiles Environment abstraction introduced in Spring 3.1 Can be declaratively and p...
Environment abstraction   & context profiles        SpringByExample.com.ua                                 40             ...
Environment abstraction   & context profiles        SpringByExample.com.ua                                 41             ...
AOPA programming paradigm which allows to separatecross-cutting concernsCross-cutting logic: Logging Tracing Security  ...
AOP Aspect Advice Join point Pointcut               SpringByExample.com.ua                                        43  ...
AOPSpringByExample.com.ua                         44      @ua_spring
Spring AOP Spring AOP defaults to using standard J2SE   dynamic proxies for AOP proxies. This enables any   interface (or...
AspectJ Spring AOP is often uses the AspectJ declaration   style AspectJ itself uses Load Time Weaving (LTW) to   modify...
Persistence with Spring Building DAO Embedded Datasources JDBC vs ORM DAO’s Integration testing with Spring @Transact...
Spring supports JDBC JPA JDO Concrete ORM NoSQL templates (Mongo/Redis) Graph DB abstractions - Spring Data Graph pr...
Persistence layer           • Persistence service which has domain specific logic Service           • Spring JDBCTemplate ...
JDBCTemplate Useful interface No boilerplate code Exception handling                     SpringByExample.com.ua        ...
JDBCTemplate   SpringByExample.com.ua                            51         @ua_spring
JDBC namespace    SpringByExample.com.ua                             52          @ua_spring
Intro to HibernateObject Relational Mapping - is a programmingtechnique for converting data between incompatibletype syste...
ORM main challenges Object inheritance Object relations                     SpringByExample.com.ua                      ...
Hibernate main parts SessionFactory Session Entity                   SpringByExample.com.ua                            ...
Transactions in Spring Support for ACID transactions Declarative and programmatic                  SpringByExample.com.u...
Transaction managers Spring support both container managed and   framework managed transactionsManagers: DataSourceTrans...
@Transactional Isolation levels Transaction propagation Read-only transactions                     SpringByExample.com....
Read-only transactions    A read-only transaction can be used when your    code reads but does not modify data. Read-only...
Isolation levels DEFAULT - The default isolation level for the   underlying resource (usually this is the   READ_COMMITTE...
Isolation levels READ_UNCOMMITTED - Least restrictive isolation  level. A transaction can read data updates even if  they...
Isolation levels READ_COMMITTED - A transaction can only read  data that has already been committed. The  transaction doe...
Isolation levels REPEATABLE_READ - A transaction always reads  the same value after it has read some data. Other  transac...
Isolation levels SERIALIZABLE - This is the most restrictive   isolation level. Transactions are completely isolated   fr...
Propagation NOT_SUPPORTEDSuspends clients transaction until bean method is complete                     SpringByExample.c...
Propagation SUPPORTSIf client has transaction, bean method is included in itIf client doesnt have transaction, bean metho...
Propagation REQUIREDIf client has a transaction, bean method is included in itIf client doesnt have a transaction, bean m...
Propagation REQUIRES_NEWIf client has a transaction, bean method creates new oneanywayIf client doesnt have a transaction...
Propagation MANDATORYIf client has a transaction, bean method uses itIf client doesnt have a transaction, exception!     ...
Propagation NEVERIf client has a transaction, exception!If client doesnt have transaction, bean method doesntcreate one  ...
Persistence layer testing Context loading in test Environment abstraction and profiles usage Transactional methods Emb...
Persistence layer testing         SpringByExample.com.ua                                  72               @ua_spring
Spring MVC Application context Dispatcher Servlet and it’s context Controllers and mappings Implementing CRUD logic U...
Application & Dispatcher     servlet context        SpringByExample.com.ua                                 74             ...
Front controller and       MVC      SpringByExample.com.ua                               75            @ua_spring
URL mappings @RequestMapping               SpringByExample.com.ua                                        76              ...
View resolvers AbstractCachingViewResolver XmlViewResolver ResourceBundleViewResolver UrlBasedViewResolver InternalRe...
View resolvers   SpringByExample.com.ua                            78         @ua_spring
CRUD in one place     SpringByExample.com.ua                              79           @ua_spring
Using Spring for UI tests Integration testing of Controllers Spring as a framework for Selenium UI tests                ...
Upcoming SlideShare
Loading in …5
×

Spring By Example One Day Workshop

2,996 views
2,887 views

Published on

Slides from our one day workshop in Odessa (30.06.2012)

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,996
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
104
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Когда первый раз задаете вопрос – представьтесь и расскажите про свой опыт.Скайп чат.
  • Bean tag attrubutes: id vs namep& c context
  • Bean tag attrubutes: id vs namep& c context Constur-argClasspath*:, file:,url:
  • Java code example of context usageBean overriding (id)
  • toString()
  • Number, Boolean, Date, Property, Locale, Pattern
  • Locale resolver
  • Locale resolver
  • Polyglot persistence
  • Some words about JDBC
  • Some words about JDBC
  • Spring By Example One Day Workshop

    1. 1. Spring By Example Oleksiy Rezchykov Eugene Scripnik
    2. 2. About us Software Engineers Working with Spring since 2006 Pragmatic programmers SpringByExample.com.ua founders SpringByExample.com.ua 2 @ua_spring
    3. 3. Contents Intro IoC using Spring Persistence with Spring Web applications with Spring MVC SpringByExample.com.ua 3 @ua_spring
    4. 4. Intro What we will do today? Meet some new faces Learn some new stuff Code some new stuff SpringByExample.com.ua 4 @ua_spring
    5. 5. SpringFramework history In October 2002 Rod Johnson wrote his famous book The first milestone release 1.0 - June 2004 Company renamed from Interface21 to SpringSource in 2007 SpringSource acquired by VMWare in 2009 SpringByExample.com.ua 5 @ua_spring
    6. 6. Spring in 2012 SpringByExample.com.ua 6 @ua_spring
    7. 7. IoC using Spring Buiding xml contexts Bean scopes & lifecycles Constructor vs Setter injection Property placeholders p & c and util name spaces Annotation context Using component scan AOP usage Spring AOP vs AspectJ SpringByExample.com.ua 7 @ua_spring
    8. 8. Inversion of Control Inversion of regular approach where object was responsible for satisfying it’s own dependencies Implementation of Dependency Injection Container instantiates and wires dependencies SpringByExample.com.ua 8 @ua_spring
    9. 9. IoC Pros vs Cons (to discuss) SpringByExample.com.ua 9 @ua_spring
    10. 10. Injection types Setter injection– when you are using setter to fulfill bean dependency Constructor injection – when constructor is called to set-up a bean with dependencies SpringByExample.com.ua 10 @ua_spring
    11. 11. CI vs SI Pro vs Cons (to discuss) SpringByExample.com.ua 11 @ua_spring
    12. 12. Context An object which contains beans declarations with their dependencies BeanFactory interface implementation SpringByExample.com.ua 12 @ua_spring
    13. 13. XML namespaces SpringByExample.com.ua 13 @ua_spring
    14. 14. ContextSpringByExample.com.ua 14 @ua_spring
    15. 15. Context usage SpringByExample.com.ua 15 @ua_spring
    16. 16. Bean lifecycle Depends on scope and lazy initialization Main bean scopes: Singleton and Prototype(Also there are multiple web scopes) SpringByExample.com.ua 16 @ua_spring
    17. 17. Bean instantiation order SpringByExample.com.ua 17 @ua_spring
    18. 18. Bean Post-processing • Bean instantiated for singletons with Beaninstantiation eager initializationDependency • Dependencies are injected into beans injection • Bean post-processing actionsBean post-processing • You can put your custom logic in here SpringByExample.com.ua 18 @ua_spring
    19. 19. Property Editors SpringByExample.com.ua 19 @ua_spring
    20. 20. Multiple config files SpringByExample.com.ua 20 @ua_spring
    21. 21. Bean definition inheritance SpringByExample.com.ua 21 @ua_spring
    22. 22. Inner Beans SpringByExample.com.ua 22 @ua_spring
    23. 23. Factory Method SpringByExample.com.ua 23 @ua_spring
    24. 24. Map, List, Set, Prop, Null SpringByExample.com.ua 24 @ua_spring
    25. 25. Map, List, Set, Prop, Nul l SpringByExample.com.ua 25 @ua_spring
    26. 26. Util namespace SpringByExample.com.ua 26 @ua_spring
    27. 27. Component model SpringByExample.com.ua 27 @ua_spring
    28. 28. @Autowired Spring proprietary annotation for property injection Supports @Qualifier to select implementation by name if more than one exists in context Has required parameter to enforce dependency loading SpringByExample.com.ua 28 @ua_spring
    29. 29. @Autowired SpringByExample.com.ua 29 @ua_spring
    30. 30. @Inject Context and Dependency Injection (CDI) standard JSR-299 SpringByExample.com.ua 30 @ua_spring
    31. 31. @Resource JSR 250 (Common annotations) Supports @PostConstruct and @PreDestroy as well SpringByExample.com.ua 31 @ua_spring
    32. 32. AutowiringAn appropriate bean for dependency is found through: Type Name Type and Name combination SpringByExample.com.ua 32 @ua_spring
    33. 33. Resource loading and i18n SpringByExample.com.ua 33 @ua_spring
    34. 34. Resource loading and i18n SpringByExample.com.ua 34 @ua_spring
    35. 35. SpEl Stands for Spring Expression Language Can be used in the xml context Can be used in bean classes SpringByExample.com.ua 35 @ua_spring
    36. 36. SpElSpringByExample.com.ua 36 @ua_spring
    37. 37. Java Spring Config @Configuration @Bean Support for Environment and Profiles SpringByExample.com.ua 37 @ua_spring
    38. 38. Java Spring Config SpringByExample.com.ua 38 @ua_spring
    39. 39. Environment abstraction & context profiles Environment abstraction introduced in Spring 3.1 Can be declaratively and programmatically configured Affects property resolution Affects bean profiles SpringByExample.com.ua 39 @ua_spring
    40. 40. Environment abstraction & context profiles SpringByExample.com.ua 40 @ua_spring
    41. 41. Environment abstraction & context profiles SpringByExample.com.ua 41 @ua_spring
    42. 42. AOPA programming paradigm which allows to separatecross-cutting concernsCross-cutting logic: Logging Tracing Security SpringByExample.com.ua 42 @ua_spring
    43. 43. AOP Aspect Advice Join point Pointcut SpringByExample.com.ua 43 @ua_spring
    44. 44. AOPSpringByExample.com.ua 44 @ua_spring
    45. 45. Spring AOP Spring AOP defaults to using standard J2SE dynamic proxies for AOP proxies. This enables any interface (or set of interfaces) to be proxied. Spring AOP can also use CGLIB proxies. This is necessary to proxy classes, rather than interfaces It is good practice to program to interfaces rather than classes, business classes normally will implement one or more business interfaces. SpringByExample.com.ua 45 @ua_spring
    46. 46. AspectJ Spring AOP is often uses the AspectJ declaration style AspectJ itself uses Load Time Weaving (LTW) to modify the bean code according to Aspect logic LTW could do much more than dynamic proxies but it is more time-consuming operation. This means that LTW has a performance drawback. SpringByExample.com.ua 46 @ua_spring
    47. 47. Persistence with Spring Building DAO Embedded Datasources JDBC vs ORM DAO’s Integration testing with Spring @Transactional & transactions with Spring SpringByExample.com.ua 47 @ua_spring
    48. 48. Spring supports JDBC JPA JDO Concrete ORM NoSQL templates (Mongo/Redis) Graph DB abstractions - Spring Data Graph project SpringByExample.com.ua 48 @ua_spring
    49. 49. Persistence layer • Persistence service which has domain specific logic Service • Spring JDBCTemplate • SessionFactory, EntityManagerFactoryRepository (DAO) • Redis/Mongo template • RDBMS (or NoSQL) DB SpringByExample.com.ua 49 @ua_spring
    50. 50. JDBCTemplate Useful interface No boilerplate code Exception handling SpringByExample.com.ua 50 @ua_spring
    51. 51. JDBCTemplate SpringByExample.com.ua 51 @ua_spring
    52. 52. JDBC namespace SpringByExample.com.ua 52 @ua_spring
    53. 53. Intro to HibernateObject Relational Mapping - is a programmingtechnique for converting data between incompatibletype systems in object-oriented programminglanguages. This creates, in effect, a "virtual objectdatabase" that can be used from within theprogramming language. SpringByExample.com.ua 53 @ua_spring
    54. 54. ORM main challenges Object inheritance Object relations SpringByExample.com.ua 54 @ua_spring
    55. 55. Hibernate main parts SessionFactory Session Entity SpringByExample.com.ua 55 @ua_spring
    56. 56. Transactions in Spring Support for ACID transactions Declarative and programmatic SpringByExample.com.ua 56 @ua_spring
    57. 57. Transaction managers Spring support both container managed and framework managed transactionsManagers: DataSourceTransactionManager HibernateTransactionManager JPATransactionManager JTATransactionManager SpringByExample.com.ua 57 @ua_spring
    58. 58. @Transactional Isolation levels Transaction propagation Read-only transactions SpringByExample.com.ua 58 @ua_spring
    59. 59. Read-only transactions A read-only transaction can be used when your code reads but does not modify data. Read-only transactions can be a useful optimization in some cases, such as when you are using Hibernate. SpringByExample.com.ua 59 @ua_spring
    60. 60. Isolation levels DEFAULT - The default isolation level for the underlying resource (usually this is the READ_COMMITTED isolation level) SpringByExample.com.ua 60 @ua_spring
    61. 61. Isolation levels READ_UNCOMMITTED - Least restrictive isolation level. A transaction can read data updates even if they havent yet been committed. (The updates might subsequently be rolled-back). SpringByExample.com.ua 61 @ua_spring
    62. 62. Isolation levels READ_COMMITTED - A transaction can only read data that has already been committed. The transaction doesnt see uncommitted updates. SpringByExample.com.ua 62 @ua_spring
    63. 63. Isolation levels REPEATABLE_READ - A transaction always reads the same value after it has read some data. Other transactions can update the data in parallel with the original transaction. SpringByExample.com.ua 63 @ua_spring
    64. 64. Isolation levels SERIALIZABLE - This is the most restrictive isolation level. Transactions are completely isolated from each other. Resource managers frequently implement this isolation level by locking large amounts of data SpringByExample.com.ua 64 @ua_spring
    65. 65. Propagation NOT_SUPPORTEDSuspends clients transaction until bean method is complete SpringByExample.com.ua 65 @ua_spring
    66. 66. Propagation SUPPORTSIf client has transaction, bean method is included in itIf client doesnt have transaction, bean method doesntcreate one SpringByExample.com.ua 66 @ua_spring
    67. 67. Propagation REQUIREDIf client has a transaction, bean method is included in itIf client doesnt have a transaction, bean method createsone SpringByExample.com.ua 67 @ua_spring
    68. 68. Propagation REQUIRES_NEWIf client has a transaction, bean method creates new oneanywayIf client doesnt have a transaction, bean method createsone SpringByExample.com.ua 68 @ua_spring
    69. 69. Propagation MANDATORYIf client has a transaction, bean method uses itIf client doesnt have a transaction, exception! SpringByExample.com.ua 69 @ua_spring
    70. 70. Propagation NEVERIf client has a transaction, exception!If client doesnt have transaction, bean method doesntcreate one SpringByExample.com.ua 70 @ua_spring
    71. 71. Persistence layer testing Context loading in test Environment abstraction and profiles usage Transactional methods Embedded data source could be used SpringByExample.com.ua 71 @ua_spring
    72. 72. Persistence layer testing SpringByExample.com.ua 72 @ua_spring
    73. 73. Spring MVC Application context Dispatcher Servlet and it’s context Controllers and mappings Implementing CRUD logic Using Spring for UI tests SpringByExample.com.ua 73 @ua_spring
    74. 74. Application & Dispatcher servlet context SpringByExample.com.ua 74 @ua_spring
    75. 75. Front controller and MVC SpringByExample.com.ua 75 @ua_spring
    76. 76. URL mappings @RequestMapping SpringByExample.com.ua 76 @ua_spring
    77. 77. View resolvers AbstractCachingViewResolver XmlViewResolver ResourceBundleViewResolver UrlBasedViewResolver InternalResourceViewResolver VelocityViewResolver / FreeMarkerViewResolver ContentNegotiatingViewResolver SpringByExample.com.ua 77 @ua_spring
    78. 78. View resolvers SpringByExample.com.ua 78 @ua_spring
    79. 79. CRUD in one place SpringByExample.com.ua 79 @ua_spring
    80. 80. Using Spring for UI tests Integration testing of Controllers Spring as a framework for Selenium UI tests SpringByExample.com.ua 80 @ua_spring

    ×