Simplificando o desenvolvimento de aplicações java com Spring Framework
22 anos, 5 em TI, 2 em Java Técnico em Informática Cursando Ciências da Computação Certificado Sun SCJP 5.0 Expresso Mercúrio( www.mercurio.com.br ) Outras Especialidades: VB,ASP,PHP. http://www.diego-pacheco.blogspot.com
01. Introdução 02. visão da arquiterura e modulos 03. Container IoC 04. Configuração de injeções via XML 05. JdbcTemplate 06. Hibernate Dao Support 07. Internacionalização com MessageSources 08. Eventos 09. ResourceLoader 10. Validação 11. Gerenciamento de transações em alto nivel. 12. Envio de E-mail 13. Agendamento de Tarefas com JDK Task 14. @AspectJ suppor 15. Testing 16. Exportação de Serviços via RMI
Spring é um framework Java feito pela  interface21 . O Spring prove uma série de facilidades e aprimoramentos dos recursos da linguagem Java e os seus principais frameworks.
O spring não reinventa a roda mas, aprimora. O Spring prove um container de IoC Abstração de diversos recursos Simplicidade e padronização Fácil set up Facilmente customizável Qualidade + design patterns Modular (somente o necessário)
Não intrusivo AOP(AspectJ) Exposição Remota J2EE Integração com frameworks Impede antí-patterns Spring for all(Acgei,webflow,mvc,osgi)
 
 
org.springframework.beans.factory.BeanFactory representa o Container IoC do Spring. Gerência de beans  Injeção de dependências Ciclo de vida lazy-initialization Autowiring Events
 
<beans> <bean   id=“pessoa” class=“com.diego.palestra.model.Pessoa” /> <bean   id=“turma” class=“com.diego.palestra.model.Turma” > <property name=“aluno” ref=“ pessoa ” /> </bean> </beans>
<beans> <bean   id=“empresa” class=“com.diego.palestra.model.PessoaJuridica” /> <bean   id=“turma” class=“com.diego.palestra.model.Turma” > <property name=“aluno” ref=“ empresa ” /> </bean> </beans>
<beans <bean id=&quot;inheritedTestBean&quot;      class=&quot;org.springframework.beans.TestBean“   abstract=&quot;true&quot;  >  <property name=&quot;name&quot; value=&quot;parent&quot;/>    <property name=&quot;age&quot; value=&quot;1&quot;/>  </bean>  <bean id=&quot;inheritsWithDifferentClass“  class=&quot;org.springframework.beans.DerivedTestBean&quot;  parent=&quot; inheritedTestBean ” > </beans>
É um template para Jdbc do Spring. Prove diversas facilidades como: - queryForInt - queryForList - queryForObject - execute Mapemanto da Arvore de SQLExceptions. Injeção de data source
<beans >  <bean id=&quot;corporateEventDao&quot;    class=&quot;com.example.JdbcCorporateEventDao“ >  <property name=&quot; dataSource &quot; ref=&quot;dataSource&quot;/>  </bean>  <bean id=&quot;dataSource&quot;  destroy-method=&quot;close&quot;    class=&quot;org.apache.commons.dbcp.BasicDataSource&quot;> <property  name=&quot;driverClassName&quot; value=&quot;${jdbc.driverClassName}“ />  <property name=&quot;url&quot; value=&quot;${jdbc.url}&quot;/>  <property name=&quot;username&quot; value=&quot;${jdbc.username}&quot;/>  <property name=&quot;password&quot; value=&quot;${jdbc.password}&quot;/>  </bean> </beans>
Prove atravez do  HibernateTemplate  metodos utilitários que simplificam as chamadas a API do Hibernate. Suporte a transações. Acesso a SessionFactory Transação Declarativa Hibernate3 ou Hibernate2
Prove um mecanismo elegante de internacionalização. Injeção de resources ResourceBundleMessageSource Multiplos Arquivos de resource Locale
Eventos Atachados ao ApplicationContext: ContextRefreshedEvent ContextClosedEvent RequestHandledEvent
public   class  BlackListNotifier  implements  ApplicationListener { private  String  notificationAddress ;  public   void  setNotificationAddress(String  notificationAddress ) {  this . notificationAddress  =  notificationAddress ;  }   public   void  onApplicationEvent(ApplicationEvent  evt ) {  if  ( evt  instanceof BlackListEvent) {  // notify appropriate person...   }   } }
Resource template = ctx.getResource(&quot;classpath:some/resource/path/myTemplate.txt); ou Resource template = ctx.getResource(&quot;file:/some/resource/path/myTemplate.txt); ou Resource template = ctx.getResource(&quot;http://myhost.com/resource/path/myTemplate.txt);
org.springframework.validation.Validator interface:  supports(Class) – Esta classe pode ser validada? validate(Object, org.springframework.validation.Errors) – Valida o objeto e registra os erros.
ValidationUtils PropertyEditors:  possibilidade de trabalhar de forma diferenciada apartir das definições do spring. BeanWrapper : habilidade de adicionar o Java beans com PropertyChangeListeners e VetoableChangeListeners sem ter que alterar as classes existentes.
Multiplas APIs:  JTA, JDBC, Hibernate, JPA, and JDO. Mais poderoso e produtivo que  EJB CMT Scalabilidade Transações locais via Jdbc Alto e Baixo niveis em abordagem Transações Declarativas via AOP
 
Aprimoração da API do JavaMail SimpleMailMessage  JavaMailSender  Velocity-based Templates FileSystemResource paraAttachments Injeção e configurações
ScheduledTimerTask MethodInvokingTimerTaskFactoryBean TimerFactoryBean Suporte a agendamento mais polido e com mais recursos pode ser feito atravez do  Quartz  o qual o Spring prove integração e facilidades também.
Utilização de Aspectos com AspectJ Interceptors @Aspect Interceptor baseados em annotations Abstração Transações Injeções configuradas de Domains Objects Proxies
 
Suporte ao Junit Suporte a Mocks(EasyMock) AbstractDependencyInjectionSpringContextTests Annotations(@ExpectedException) Injeção automatica de propriedades protected AbstractTransactionalSpringContextTests(Rollback default)
Exposição/inportação de serviços via: RMI HTTP invoker( Java serialization via HTTP) Hessian(HTTP-Based) Burlap(XML-Based) JAX RPC(Web Services),XFire JMS
Spring MVC Spring WebFlow Spring OSGI Spring ACEGI Spring WebServices
Ibatis,JDO JMX EJB Struts,JSF,Tiles,Web Work Velocity & Freemaker XSLT PDF/Excel Jasper Reports Dynamic Language(Groovy,JRuby)
Modelo alternativo ao EJB Container IoC Fácil Aprendizado Modelo unico(Abstração) Patterns Qualidade + simplicidade Customizavel Modular Integração com quase tudo
Prove Desacoplamento Deixa a aplicação mais escalável Padronização Produtividade Orientado a interfaces e POJOs Exceptions Unchecked Documentação impecavel Forum muito completo
Perguntas?
Diego Pacheco E-mail: [email_address] [email_address] Blog: http://www.diego-pacheco.blogspot.com Fone: 51-8128 2904
Simplificando o desenvolvimento de aplicações java com Spring Framework

Spring Framework

  • 1.
    Simplificando o desenvolvimentode aplicações java com Spring Framework
  • 2.
    22 anos, 5em TI, 2 em Java Técnico em Informática Cursando Ciências da Computação Certificado Sun SCJP 5.0 Expresso Mercúrio( www.mercurio.com.br ) Outras Especialidades: VB,ASP,PHP. http://www.diego-pacheco.blogspot.com
  • 3.
    01. Introdução 02.visão da arquiterura e modulos 03. Container IoC 04. Configuração de injeções via XML 05. JdbcTemplate 06. Hibernate Dao Support 07. Internacionalização com MessageSources 08. Eventos 09. ResourceLoader 10. Validação 11. Gerenciamento de transações em alto nivel. 12. Envio de E-mail 13. Agendamento de Tarefas com JDK Task 14. @AspectJ suppor 15. Testing 16. Exportação de Serviços via RMI
  • 4.
    Spring é umframework Java feito pela interface21 . O Spring prove uma série de facilidades e aprimoramentos dos recursos da linguagem Java e os seus principais frameworks.
  • 5.
    O spring nãoreinventa a roda mas, aprimora. O Spring prove um container de IoC Abstração de diversos recursos Simplicidade e padronização Fácil set up Facilmente customizável Qualidade + design patterns Modular (somente o necessário)
  • 6.
    Não intrusivo AOP(AspectJ)Exposição Remota J2EE Integração com frameworks Impede antí-patterns Spring for all(Acgei,webflow,mvc,osgi)
  • 7.
  • 8.
  • 9.
    org.springframework.beans.factory.BeanFactory representa oContainer IoC do Spring. Gerência de beans Injeção de dependências Ciclo de vida lazy-initialization Autowiring Events
  • 10.
  • 11.
    <beans> <bean id=“pessoa” class=“com.diego.palestra.model.Pessoa” /> <bean id=“turma” class=“com.diego.palestra.model.Turma” > <property name=“aluno” ref=“ pessoa ” /> </bean> </beans>
  • 12.
    <beans> <bean id=“empresa” class=“com.diego.palestra.model.PessoaJuridica” /> <bean id=“turma” class=“com.diego.palestra.model.Turma” > <property name=“aluno” ref=“ empresa ” /> </bean> </beans>
  • 13.
    <beans <bean id=&quot;inheritedTestBean&quot; class=&quot;org.springframework.beans.TestBean“ abstract=&quot;true&quot; > <property name=&quot;name&quot; value=&quot;parent&quot;/> <property name=&quot;age&quot; value=&quot;1&quot;/> </bean> <bean id=&quot;inheritsWithDifferentClass“ class=&quot;org.springframework.beans.DerivedTestBean&quot; parent=&quot; inheritedTestBean ” > </beans>
  • 14.
    É um templatepara Jdbc do Spring. Prove diversas facilidades como: - queryForInt - queryForList - queryForObject - execute Mapemanto da Arvore de SQLExceptions. Injeção de data source
  • 15.
    <beans > <bean id=&quot;corporateEventDao&quot; class=&quot;com.example.JdbcCorporateEventDao“ > <property name=&quot; dataSource &quot; ref=&quot;dataSource&quot;/> </bean> <bean id=&quot;dataSource&quot; destroy-method=&quot;close&quot; class=&quot;org.apache.commons.dbcp.BasicDataSource&quot;> <property name=&quot;driverClassName&quot; value=&quot;${jdbc.driverClassName}“ /> <property name=&quot;url&quot; value=&quot;${jdbc.url}&quot;/> <property name=&quot;username&quot; value=&quot;${jdbc.username}&quot;/> <property name=&quot;password&quot; value=&quot;${jdbc.password}&quot;/> </bean> </beans>
  • 16.
    Prove atravez do HibernateTemplate metodos utilitários que simplificam as chamadas a API do Hibernate. Suporte a transações. Acesso a SessionFactory Transação Declarativa Hibernate3 ou Hibernate2
  • 17.
    Prove um mecanismoelegante de internacionalização. Injeção de resources ResourceBundleMessageSource Multiplos Arquivos de resource Locale
  • 18.
    Eventos Atachados aoApplicationContext: ContextRefreshedEvent ContextClosedEvent RequestHandledEvent
  • 19.
    public class BlackListNotifier implements ApplicationListener { private String notificationAddress ; public void setNotificationAddress(String notificationAddress ) { this . notificationAddress = notificationAddress ; } public void onApplicationEvent(ApplicationEvent evt ) { if ( evt instanceof BlackListEvent) { // notify appropriate person... } } }
  • 20.
    Resource template =ctx.getResource(&quot;classpath:some/resource/path/myTemplate.txt); ou Resource template = ctx.getResource(&quot;file:/some/resource/path/myTemplate.txt); ou Resource template = ctx.getResource(&quot;http://myhost.com/resource/path/myTemplate.txt);
  • 21.
    org.springframework.validation.Validator interface: supports(Class) – Esta classe pode ser validada? validate(Object, org.springframework.validation.Errors) – Valida o objeto e registra os erros.
  • 22.
    ValidationUtils PropertyEditors: possibilidade de trabalhar de forma diferenciada apartir das definições do spring. BeanWrapper : habilidade de adicionar o Java beans com PropertyChangeListeners e VetoableChangeListeners sem ter que alterar as classes existentes.
  • 23.
    Multiplas APIs: JTA, JDBC, Hibernate, JPA, and JDO. Mais poderoso e produtivo que EJB CMT Scalabilidade Transações locais via Jdbc Alto e Baixo niveis em abordagem Transações Declarativas via AOP
  • 24.
  • 25.
    Aprimoração da APIdo JavaMail SimpleMailMessage JavaMailSender Velocity-based Templates FileSystemResource paraAttachments Injeção e configurações
  • 26.
    ScheduledTimerTask MethodInvokingTimerTaskFactoryBean TimerFactoryBeanSuporte a agendamento mais polido e com mais recursos pode ser feito atravez do Quartz o qual o Spring prove integração e facilidades também.
  • 27.
    Utilização de Aspectoscom AspectJ Interceptors @Aspect Interceptor baseados em annotations Abstração Transações Injeções configuradas de Domains Objects Proxies
  • 28.
  • 29.
    Suporte ao JunitSuporte a Mocks(EasyMock) AbstractDependencyInjectionSpringContextTests Annotations(@ExpectedException) Injeção automatica de propriedades protected AbstractTransactionalSpringContextTests(Rollback default)
  • 30.
    Exposição/inportação de serviçosvia: RMI HTTP invoker( Java serialization via HTTP) Hessian(HTTP-Based) Burlap(XML-Based) JAX RPC(Web Services),XFire JMS
  • 31.
    Spring MVC SpringWebFlow Spring OSGI Spring ACEGI Spring WebServices
  • 32.
    Ibatis,JDO JMX EJBStruts,JSF,Tiles,Web Work Velocity & Freemaker XSLT PDF/Excel Jasper Reports Dynamic Language(Groovy,JRuby)
  • 33.
    Modelo alternativo aoEJB Container IoC Fácil Aprendizado Modelo unico(Abstração) Patterns Qualidade + simplicidade Customizavel Modular Integração com quase tudo
  • 34.
    Prove Desacoplamento Deixaa aplicação mais escalável Padronização Produtividade Orientado a interfaces e POJOs Exceptions Unchecked Documentação impecavel Forum muito completo
  • 35.
  • 36.
    Diego Pacheco E-mail:[email_address] [email_address] Blog: http://www.diego-pacheco.blogspot.com Fone: 51-8128 2904
  • 37.
    Simplificando o desenvolvimentode aplicações java com Spring Framework