Lightweight J2EE development with Spring (special for UADEV)
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Lightweight J2EE development with Spring (special for UADEV)

on

  • 1,828 views

Our presentation for UADev club on the "Spring va J2EE" topic.

Our presentation for UADev club on the "Spring va J2EE" topic.

Statistics

Views

Total Views
1,828
Views on SlideShare
1,749
Embed Views
79

Actions

Likes
0
Downloads
60
Comments
1

1 Embed 79

https://twitter.com 79

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • POR FAVOR ESTA PROPUESTA DE NEGOCIO, ESCRIBA EN MI ESPALDA ID si está interesado.
    ------------------------------------

    Feliz mes nuevo abundante de noviembre,

    Hola.

    ¿Cómo estás hoy?
    Espero que estés bien y que todo está bien con usted? gracias God.My nombre es jenifer PETERSON. (estoy buscando una buena relación y además que tenga propuesta de negocios con usted) si lo desea. por favor, escríbeme mensaje a mi buzón de correo electrónico
    Thanks,>

    jeniferpeterson1 en / yh / dt / cum
    ---------------------

    PLEASE THIS BUSINESS PROPOSAL, WRITE ON MY ID BACK IF INTERESTED.
    ------------------------------------

    Happy abundant new month of November,

    Hello.

    how are you today?
    I hope you are fine and all is well with you ? thank God.My name is JENIFER PETERSON .(i am looking for a good relationship and also to have business proposal with you )if you want. please write me message to my email box
    THANKS,>

    jeniferpeterson1 at / yh / dt / cum
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • EJB 2x, Containers set-up, Spec immaturity
  • 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()
  • Locale resolver
  • Locale resolver
  • Spring Vaadin integration
  • Spring Vaadin integration
  • Polyglot persistence
  • Some words about JDBC
  • Some words about JDBC

Lightweight J2EE development with Spring (special for UADEV) Presentation Transcript

  • 1. Lightweight EnterpriseJava Development using Spring Framework Oleksiy Rezchykov Eugene Scripnik
  • 2. About us Software Engineers Working with Spring since 2006 Pragmatic programmers SpringByExample.com.ua founders SpringByExample.com.ua 2 @ua_spring #uadevclub
  • 3. Contents Spring origins IoC using Spring Persistence with Spring Declarative caching using @Cachable Web applications with Spring MVC Spring ecosystem Framework criticism SpringByExample.com.ua 3 @ua_spring #uadevclub
  • 4. J2EE 5Development SpringByExample.com.ua 4 @ua_spring #uadevclub
  • 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 Rod Johnson left VMWare – July 2012 SpringByExample.com.ua 5 @ua_spring #uadevclub
  • 6. 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 6 @ua_spring #uadevclub
  • 7. 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 Method injection SpringByExample.com.ua 7 @ua_spring #uadevclub
  • 8. Context An object which contains beans declarations with their dependencies BeanFactory interface implementation SpringByExample.com.ua 8 @ua_spring #uadevclub
  • 9. XML namespaces SpringByExample.com.ua 9 @ua_spring #uadevclub
  • 10. ContextSpringByExample.com.ua 10 @ua_spring #uadevclub
  • 11. Context usage SpringByExample.com.ua 11 @ua_spring #uadevclub
  • 12. Bean lifecycle Depends on scope and lazy initialization Main bean scopes: Singleton and Prototype(Also there are multiple web scopes) SpringByExample.com.ua 12 @ua_spring #uadevclub
  • 13. Bean instantiation order SpringByExample.com.ua 13 @ua_spring #uadevclub
  • 14. 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 14 @ua_spring #uadevclub
  • 15. Map, List, Set, Prop, Nul l SpringByExample.com.ua 15 @ua_spring #uadevclub
  • 16. Map, List, Set, Prop, Nul l SpringByExample.com.ua 16 @ua_spring #uadevclub
  • 17. Util namespace SpringByExample.com.ua 17 @ua_spring #uadevclub
  • 18. Component model SpringByExample.com.ua 18 @ua_spring #uadevclub
  • 19. @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 19 @ua_spring #uadevclub
  • 20. @Autowired SpringByExample.com.ua 20 @ua_spring #uadevclub
  • 21. @Inject Context and Dependency Injection (CDI) standard JSR-299 SpringByExample.com.ua 21 @ua_spring #uadevclub
  • 22. @Resource JSR 250 (Common annotations) Supports @PostConstruct and @PreDestroy as well SpringByExample.com.ua 22 @ua_spring #uadevclub
  • 23. Resource loading and i18n SpringByExample.com.ua 23 @ua_spring #uadevclub
  • 24. Resource loading and i18n SpringByExample.com.ua 24 @ua_spring #uadevclub
  • 25. SpEl Stands for Spring Expression Language Can be used in the xml context Can be used in bean classes SpringByExample.com.ua 25 @ua_spring #uadevclub
  • 26. SpElSpringByExample.com.ua 26 @ua_spring #uadevclub
  • 27. Java Spring Config @Configuration @Bean Support for Environment and Profiles SpringByExample.com.ua 27 @ua_spring #uadevclub
  • 28. Java Spring Config SpringByExample.com.ua 28 @ua_spring #uadevclub
  • 29. 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 29 @ua_spring #uadevclub
  • 30. Environment abstraction & context profiles SpringByExample.com.ua 30 @ua_spring #uadevclub
  • 31. AOPA programming paradigm which allows to separatecross-cutting concernsCross-cutting logic: Logging Tracing Security SpringByExample.com.ua 31 @ua_spring #uadevclub
  • 32. AOP Aspect Advice Join point Pointcut SpringByExample.com.ua 32 @ua_spring #uadevclub
  • 33. AOPSpringByExample.com.ua 33 @ua_spring #uadevclub
  • 34. 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 34 @ua_spring #uadevclub
  • 35. 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 35 @ua_spring #uadevclub
  • 36. “pure” AspectJ SpringByExample.com.ua 36 @ua_spring #uadevclub
  • 37. “pure” AspectJ SpringByExample.com.ua 37 @ua_spring #uadevclub
  • 38. Persistence with Spring Building DAO Spring Data Embedded Datasources JDBC vs ORM DAO’s Integration testing with Spring @Transactional & transactions with Spring SpringByExample.com.ua 38 @ua_spring #uadevclub
  • 39. Spring supports JDBC JPA JDO Concrete ORM SpringByExample.com.ua 39 @ua_spring #uadevclub
  • 40. Spring Data RDBMS: JPA, JDBC Extensions BigData: ApacheHadoop DataGrid: GermFire HTTP: REST Key-value stores: Redis Document Stores: MongoDB Graph Databases: Neo4j Column stores: Hbase SpringByExample.com.ua 40 @ua_spring #uadevclub
  • 41. 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 41 @ua_spring #uadevclub
  • 42. JDBCTemplate Useful interface No boilerplate code Exception handling SpringByExample.com.ua 42 @ua_spring #uadevclub
  • 43. JDBCTemplate SpringByExample.com.ua 43 @ua_spring #uadevclub
  • 44. JDBC namespace SpringByExample.com.ua 44 @ua_spring #uadevclub
  • 45. Spring Data JPA CRUD SpringByExample.com.ua 45 @ua_spring #uadevclub
  • 46. Spring Data JPA Query DSL SpringByExample.com.ua 46 @ua_spring #uadevclub
  • 47. Transactions in Spring Support for ACID transactions Declarative and programmatic SpringByExample.com.ua 47 @ua_spring #uadevclub
  • 48. Transaction managers Spring support both container managed and framework managed transactionsManagers: DataSourceTransactionManager HibernateTransactionManager JPATransactionManager JTATransactionManager SpringByExample.com.ua 48 @ua_spring #uadevclub
  • 49. @Transactional Transaction propagation Read-only transactions Built using Spring AOP SpringByExample.com.ua 49 @ua_spring #uadevclub
  • 50. Persistence layer testing Context loading in test Environment abstraction and profiles usage Transactional methods Embedded data source could be used SpringByExample.com.ua 50 @ua_spring #uadevclub
  • 51. Persistence layer testing SpringByExample.com.ua 51 @ua_spring #uadevclub
  • 52. @Cacheable One-two-three magic (not always work as expected) Support for JCache (JSR-107) SpringByExample.com.ua 52 @ua_spring #uadevclub
  • 53. @Cacheable <cache:annotation-driven> or @EnableCaching CacheManager instance in the context @Cacheable, @CachePut, @CacheEvict SpringByExample.com.ua 53 @ua_spring #uadevclub
  • 54. Spring MVC Application context Dispatcher Servlet and it’s context Controllers and mappings Implementing CRUD logic REST Testing MVC SpringByExample.com.ua 54 @ua_spring #uadevclub
  • 55. Application & Dispatcher servlet context SpringByExample.com.ua 55 @ua_spring #uadevclub
  • 56. Front controller and MVC SpringByExample.com.ua 56 @ua_spring #uadevclub
  • 57. URL mappings @RequestMapping SpringByExample.com.ua 57 @ua_spring #uadevclub
  • 58. View resolvers AbstractCachingViewResolver XmlViewResolver ResourceBundleViewResolver UrlBasedViewResolver InternalResourceViewResolver VelocityViewResolver / FreeMarkerViewResolver ContentNegotiatingViewResolver SpringByExample.com.ua 58 @ua_spring #uadevclub
  • 59. View resolvers SpringByExample.com.ua 59 @ua_spring #uadevclub
  • 60. CRUD in one place SpringByExample.com.ua 60 @ua_spring #uadevclub
  • 61. REST in Spring MVC Starting Spring 3.1.x ContentNegotiatingViewResolver @ResponseBody combined with produces @RequestBody combined with consumes SpringByExample.com.ua 61 @ua_spring #uadevclub
  • 62. REST in Spring MVC SpringByExample.com.ua 62 @ua_spring #uadevclub
  • 63. Testing MVC Starting from Spring 3.2 spring-test-mvc project Server-side Spring MVC tests New Spring Mocks Different strategies SpringByExample.com.ua 63 @ua_spring #uadevclub
  • 64. Testing MVC SpringByExample.com.ua 64 @ua_spring #uadevclub
  • 65. Testing MVC SpringByExample.com.ua 65 @ua_spring #uadevclub
  • 66. Just to mention Type conversion Formatter SPI SpringByExample.com.ua 66 @ua_spring #uadevclub
  • 67. Just to mention Type conversion Formatter SPI SpringByExample.com.ua 67 @ua_spring #uadevclub
  • 68. Just to mention Flash attributes and Redirect attributes SpringByExample.com.ua 68 @ua_spring #uadevclub
  • 69. Spring in 2012 SpringByExample.com.ua 69 @ua_spring #uadevclub
  • 70. Just to mention Spring Roo Spring Hadoop Spring Android SpringByExample.com.ua 70 @ua_spring #uadevclub
  • 71. Criticism Every tool should be used only if you could not solve your task without it – KISS When a lot of stuff come out-of-the-box it is not always good - YAGNI When something is broken it is pain in the … Open source but VMWare SpringByExample.com.ua 71 @ua_spring #uadevclub
  • 72. Sources http://static.springsource.org/spring/docs/3.1.x/sprin g-framework-reference/html/index.html https://github.com/springbyexample/spring-by- example https://github.com/mcgray/spring-vaadin http://rstoyanchev.github.com/spring-32-test- webapps/ SpringByExample.com.ua 72 @ua_spring #uadevclub
  • 73. Questions?@ua_springoleksiy.rezchykov@gmail.comeugene.scripnik@gmail.comSpringByExample.com.ua SpringByExample.com.ua 73 @ua_spring #uadevclub