SlideShare uma empresa Scribd logo
1 de 60
 
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
package  com.targettrust.spring.extend; public   abstract   class  PessoaService { private  String  nome ; private  String  telefone ; private  String  email ; public  PessoaService() {} public  String getNome() { return   nome ; } public   void  setNome(String nome) { this . nome  = nome; } public  String getTelefone() { return   telefone ; } public   void  setTelefone(String telefone) { this . telefone  = telefone; } public  String getEmail() { return   email ; } public   void  setEmail(String email) { this . email  = email; } }
package  com.targettrust.spring.extend; public   class  PessoaFisicaService  extends  PessoaService { private  String  cpf ; public  PessoaFisicaService() {} public   boolean  validaCpf(){ return  CpfUtils. validaCPF ( cpf ); } public   void  mostraPessoa(){   if  (validaCpf()){   System. out .println( "nome: "  + getNome() +      " telefone: "  + getTelefone() + " email: "  + getEmail() +  " cpf: "  +  cpf );   } else {   System. out .println( "Essa pessoa não tem um CPF Valido." );    } } public  String getCpf() { return   cpf ; } public   void  setCpf(String cpf) { this . cpf  = cpf; } }
package  com.targettrust.spring.extend; public   class  PessoaFisicaService  extends  PessoaService { private  String  cpf ; public  PessoaFisicaService() {} public   boolean  validaCpf(){ return  CpfUtils. validaCPF ( cpf ); } public   void  mostraPessoa(){   if  (validaCpf()){   System. out .println( "nome: "  + getNome() +      " telefone: "  + getTelefone() + " email: "  + getEmail() +  " cpf: "  +  cpf );   } else {   System. out .println( "Essa pessoa não tem um CPF Valido." );    } } public  String getCpf() { return   cpf ; } public   void  setCpf(String cpf) { this . cpf  = cpf; } }
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; >   < bean    id = &quot;pessoaService&quot;    class = &quot;com.targettrust.spring.extend.PessoaService&quot;   abstract = &quot;true&quot;   >   < property  name = &quot;nome&quot;  value = &quot;Diego&quot;  />   < property  name = &quot;email&quot;  value = &quot;pacheco@diego.com.spring&quot;  />   < property  name = &quot;telefone&quot;  value = &quot;455-55-55&quot;  />   </ bean >     < bean   abstract = &quot;false&quot;   id = &quot;pessoaFisicaService&quot;   class = &quot;com.targettrust.spring.extend.PessoaFisicaService&quot;   parent = &quot;pessoaService&quot;   >     < property  name = &quot;cpf&quot;  value = &quot;47888971210&quot;  />   </ bean >   </ beans >
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
package  com.targettrust.spring.validate; import  org.springframework.validation.Errors; import  org.springframework.validation.ValidationUtils; import  org.springframework.validation.Validator; public   class  Pessoa  implements  Validator{ private  String  nome ; private  Integer  idade ; public   boolean  supports(Class clazz) { return  Pessoa. class .equals(clazz); } public   void  validate(Object target, Errors errors) {   ValidationUtils. rejectIfEmpty (errors,  &quot;nome&quot; ,  &quot;nome.vazio&quot; );   Pessoa p = (Pessoa) target;   if  (p.getIdade() < 0) {   errors.rejectValue( &quot;idade&quot; ,  &quot;valor negativo&quot; );   }  else   if  (p.getIdade() > 120) {   errors.rejectValue( &quot;idade&quot; ,  &quot;velho de mais&quot; );   } } public  String getNome() { return   nome ; } public   void  setNome(String nome) { this . nome  = nome; } public  Integer getIdade() { return   idade ; } public   void  setIdade(Integer idade) { this . idade  = idade; } }
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;true&quot; >   < bean    id = &quot;pessoa&quot;    class = &quot;com.targettrust.spring.validate.Pessoa&quot;     >   < property  name = &quot;nome&quot;  value = &quot;Fulano&quot;  />   < property  name = &quot;idade&quot;  value = &quot;-1&quot;  />     </ bean >   </ beans >
package  com.targettrust.spring.validate; import  org.springframework.beans.factory.BeanFactory; import  org.springframework.context.support.ClassPathXmlApplicationContext; import  org.springframework.validation.BeanPropertyBindingResult; import  org.springframework.validation.Errors; public   class  Teste { public   static   void  main(String[] args) { BeanFactory bf =  new  ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/validate/Spring-beans.xml&quot; ); Pessoa p = (Pessoa) bf.getBean( &quot;pessoa&quot; ); System. out .println( &quot;Nome: &quot;  + p.getNome() +  &quot; idade: &quot;  + p.getIdade()); Errors e  =  new  BeanPropertyBindingResult(p, &quot;Pessoa&quot; ); p.validate(p, e); for (Object es: e.getAllErrors()){   System. out .println(es); } } }   Chamada manual !!!
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
 
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],ConfigurableBeanFactory factory =  new  XmlBeanFactory( new  ClassPathResource( &quot;beans.xml&quot; ));   MeuBeanPostProcessor postProcessor =  new  MeuBeanPostProcessor(); factory.addBeanPostProcessor(postProcessor);
[object Object],[object Object],package  com.targettrust.spring.beanpostprocessors; public   class  ObjetoA { }   package  com.targettrust.spring.beanpostprocessors; public   class  ObjetoB { }   package  com.targettrust.spring.beanpostprocessors; public   class  ObjetoC { }
package  com.targettrust.spring.beanpostprocessors; import  org.springframework.beans.BeansException; import  org.springframework.beans.factory.config.BeanPostProcessor; public   class  LogCreationBeanPostProcessor  implements  BeanPostProcessor { @Override public  Object postProcessBeforeInitialization(Object bean, String beanName) throws  BeansException { return  bean; } @Override public  Object postProcessAfterInitialization(Object bean, String beanName) throws  BeansException { System. out .println( &quot;Craindo bean: &quot;  + beanName); return  bean; } }
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;false&quot; > < bean  id = &quot;a&quot;    class = &quot;com.targettrust.spring.beanpostprocessors.ObjetoA&quot;    />   < bean  id = &quot;b&quot;    class = &quot;com.targettrust.spring.beanpostprocessors.ObjetoB&quot;    /> < bean  id = &quot;c&quot;    class = &quot;com.targettrust.spring.beanpostprocessors.ObjetoC&quot;    />   < bean  class = &quot;com.targettrust.spring.beanpostprocessors.LogCreationBeanPostProcessor”  />   </ beans >
package  com.targettrust.spring.beanpostprocessors; import  org.springframework.context.support.ClassPathXmlApplicationContext; public   class  Teste { public   static   void  main(String[] args) { new  ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/&quot; + &quot;beanpostprocessors/Spring-beans.xml&quot; ); } }
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
package  com.targettrust.spring.beanfactorypostprocessors; import  java.text.SimpleDateFormat; import  java.util.Date; public   class  DataService { private  String  pattern ; public  String getPattern() { return   pattern ; } public   void  setPattern(String pattern) { this . pattern  = pattern; } public  String showSysDate(){ SimpleDateFormat sdf =  new  SimpleDateFormat( pattern ); return  sdf.format( new  Date()); } }
package  com.targettrust.spring.beanfactorypostprocessors; import  java.io.FileInputStream; import  java.util.Map; import  java.util.Properties; import  java.util.Map.Entry; import  org.springframework.beans.BeansException; import  org.springframework.beans.FatalBeanException; import  org.springframework.beans.factory.config.BeanFactoryPostProcessor; import  org.springframework.beans.factory.config.ConfigurableListableBeanFactory; public   class  DatePatternRouterBeanFactoryPostProcessor  implements  BeanFactoryPostProcessor { public   void  postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)  throws  BeansException { Properties p =  new  Properties(); try  { p.load( new   FileInputStream( &quot;./src/com/targettrust/spring/” +      beanfactorypostprocessors/patterns.properties&quot; )); System. out .println( &quot;Patterns: &quot;  + p); }  catch  (Exception e) { throw   new  FatalBeanException( &quot;Erro ao buscar patterns!&quot; ,e); } Map<Object,Object> beans = beanFactory.getBeansOfType(DataService. class ); for (Entry<Object, Object> e: beans.entrySet()){ System. out .println( &quot;Aplicando pattern em service: &quot;  + e); DataService service = ((DataService)e.getValue()); service.setPattern(p.getProperty( &quot;pattern.&quot;   + service.getPattern().replace( &quot;#&quot; ,  &quot;&quot; ))); } } }
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;false&quot; > < bean  id = &quot;brasilDateService&quot;  class = &quot;com.targettrust.spring.beanfactorypostprocessors.DataService&quot;  > < property  name = &quot;pattern&quot;  value = &quot;#brasil&quot;  /> </ bean >   < bean  id = &quot;usDateService&quot;  class = &quot;com.targettrust.spring.beanfactorypostprocessors.DataService&quot;  > < property  name = &quot;pattern&quot;  value = &quot;#us&quot;  /> </ bean >   < bean  class = &quot;com.targettrust.spring.beanfactorypostprocessors.DatePatternRouterBeanFactoryPostProcessor&quot;  />   </ beans >
package  com.targettrust.spring.beanfactorypostprocessors; import  org.springframework.context.ApplicationContext; import  org.springframework.context.support.ClassPathXmlApplicationContext; public   class  Teste { public   static   void  main(String[] args) { ApplicationContext ap =  new   ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/beanfactorypostprocessors/Spring-beans.xml&quot; ); System. out .println( &quot;Data Brasil pattern : &quot;  + ((DataService)ap.getBean( &quot;brasilDateService&quot; )).showSysDate()); System. out .println( &quot;Data Us pattern  : &quot;  +  (DataService)ap.getBean( &quot;usDateService&quot; )).showSysDate()); } }
[object Object],[object Object],[object Object],[object Object],< bean id = &quot;txt&quot; class = &quot;java.io.File&quot; > < constructor-arg  index = &quot;0&quot;  value = &quot;C:/BOOTSECT.BAK&quot;  /> </ bean >
 
 
 
[object Object],[object Object],[object Object],[object Object],[object Object]
package  com.targettrust.spring.propertyeditor; public   class  Aluno { private  String  nome ; public  Aluno() {} public  Aluno(String nome) { super (); this . nome  = nome; } public  String getNome() { return   nome ; } public   void  setNome(String nome) { this . nome  = nome; } @Override public  String toString() { return   nome ; } }
package  com.targettrust.spring.propertyeditor; import  java.util.List; public   class  Turma { private  String  nome ; private  List<Aluno>  alunos ; public  Turma() {} public  Turma(String nome, List<Aluno> alunos) { super (); this . nome  = nome; this . alunos  = alunos; } public  String getNome() { return   nome ; } public   void  setNome(String nome) { this . nome  = nome; } public  List<Aluno> getAlunos() { return   alunos ; } public   void  setAlunos(List<Aluno> alunos) { this . alunos  = alunos; } @Override public  String toString() { return   nome  +  &quot; alunos: &quot;  +  alunos .toString(); } }
package  com.targettrust.spring.propertyeditor; import  java.beans.PropertyEditorSupport; public   class  AlunoEditor  extends  PropertyEditorSupport{ @Override public   void  setAsText(String text)  throws  IllegalArgumentException { Aluno a =  new  Aluno(text); setValue(a); } }
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean  id = &quot;turma“ class = &quot;com.targettrust.spring.propertyeditor.Turma&quot; > < property  name = &quot;nome&quot;  value = &quot;Curso-Spring&quot;  /> < property  name = &quot;alunos&quot; > < list >   < value > Rod </ value >   < value > Joe </ value >   < value > Bart </ value >   < value > Homer </ value >   < value > Hammer </ value > </ list > </ property > </ bean > < bean  id = &quot;customEditorConfigurer“ class = &quot;org.springframework.beans.factory.config.CustomEditorConfigurer“ > < property  name = &quot;customEditors&quot; > < map >   < entry  key = &quot;com.targettrust.spring.propertyeditor.Aluno&quot; >   < bean  class = &quot;com.targettrust.spring.propertyeditor.AlunoEditor&quot;  />   </ entry >   </ map > </ property > </ bean > </ beans >
[object Object],[object Object],[object Object],[object Object],[object Object]
 
package  com.targettrust.spring.event; import  org.springframework.context.ApplicationEvent; public   class  FeriadoEvent  extends  ApplicationEvent{ private  String  data ; private   static   final   long   serialVersionUID  = 1L; public  FeriadoEvent(Object source,String data) { super (source); this . data  = data; } public  String getData() {   return   data ; } }
package  com.targettrust.spring.event; import  org.springframework.context.ApplicationEvent; import  org.springframework.context.ApplicationListener; public   class  FeriadoListener  implements  ApplicationListener { public   void  onApplicationEvent(ApplicationEvent event) { if  (event  instanceof  FeriadoEvent){   FeriadoEvent fe = (FeriadoEvent)event;    System. out .println( &quot;Viva! Dia: &quot;  + fe.getData() +  &quot;  é  feriado. Uhhuu!!!&quot;  ); } } }
package  com.targettrust.spring.event; import  org.springframework.beans.BeansException; import  org.springframework.context.ApplicationContext; import  org.springframework.context.ApplicationContextAware; public   class  RH  implements  ApplicationContextAware { private  ApplicationContext  ac ; public   void  pulicarFeriados(){   ac .publishEvent( new  FeriadoEvent( this , &quot;01/01/08&quot; )); } @Override public   void  setApplicationContext(ApplicationContext applicationContext)   throws  BeansException {   ac  = applicationContext; } }
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean  id = &quot;rh&quot;  class = &quot;com.targettrust.spring.event.RH&quot;  /> < bean id = &quot;funcionarioEsperto &quot; class = &quot;com.targettrust.spring.event.FeriadoListener&quot; />   </ beans >
package  com.targettrust.spring.event; import  org.springframework.context.ApplicationContext; import  org.springframework.context.support.ClassPathXmlApplicationContext; public   class  Teste { public   static   void  main(String[] args) { ApplicationContext ac =  new   ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/event/Spring-beans.xml&quot; ); RH rh = (RH)ac.getBean( &quot;rh&quot; ); rh.pulicarFeriados(); } }
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
package  com.targettrust.spring.propertyplaceholderconfigurer; public   class  Instrutor { private  String  nome ; private   int   idade ; private  String  time ; private   float   altura ; // getters and Setters } nome = deigo idade = 22 altura = 1.85   Arquivo .properties
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean class = &quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot; > < property  name = &quot;location“ > < value > classpath:com/targettrust/spring/propertyplaceholderconfigurer/config.properties </ value > </ property > < property  name = &quot;properties&quot; >   < value > time=Grêmio </ value > </ property > </ bean > < bean id = &quot;I” class = &quot;com.targettrust.spring.propertyplaceholderconfigurer.Instrutor&quot; >   < property  name = &quot;nome&quot;  value = &quot;${nome}&quot;  />   < property  name = &quot;idade&quot;  value = &quot;${idade}&quot;  />   < property  name = &quot;time&quot;  value = &quot;${time}&quot;  />   < property  name = &quot;altura&quot;  value = &quot;${altura}&quot;  /> </ bean > </ beans >
[object Object],[object Object],[object Object],[object Object],[object Object]
package  com.targettrust.spring.singletonbeanfactorylocator; public   class  ObjetoA {}   <? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;true&quot; > < bean  id = &quot;A1&quot;      class = &quot;com.targettrust.spring.singletonbeanfactorylocator.ObjetoA” />   </ beans >   + A2 A3 A4
<? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;false&quot; > < bean  id = &quot;beanFactoryBean“ class = &quot;org.springframework.context.support.ClassPathXmlApplicationContext” > < constructor-arg > < list > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-A.xml </ value > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-B.xml </ value > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-C.xml </ value > </ list > </ constructor-arg > </ bean > < bean  id = &quot;beanFactoryBean2“ class = &quot;org.springframework.context.support.ClassPathXmlApplicationContext“ > < constructor-arg > < list > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-D.xml </ value > </ list > </ constructor-arg > </ bean > </ beans >
package  com.targettrust.spring.singletonbeanfactorylocator; import  org.springframework.beans.factory.access.BeanFactoryLocator; import  org.springframework.beans.factory.access.BeanFactoryReference; import  org.springframework.beans.factory.access.SingletonBeanFactoryLocator; public   class  Teste { public   static   void  main(String[] args) { BeanFactoryLocator bfl = SingletonBeanFactoryLocator. getInstance (); BeanFactoryReference bf = bfl.useBeanFactory( &quot;beanFactoryBean&quot; ); ObjetoA a1 = (ObjetoA)bf.getFactory().getBean( &quot;A1&quot; ); ObjetoA a2 = (ObjetoA)bf.getFactory().getBean( &quot;A2&quot; ); ObjetoA a3 = (ObjetoA)bf.getFactory().getBean( &quot;A3&quot; );   bf = bfl.useBeanFactory( &quot;beanFactoryBean2&quot; ); ObjetoA a4 = (ObjetoA)bf.getFactory().getBean( &quot;A4&quot; );   System. out .println( &quot;ObjetoA a1: &quot;  + a1); System. out .println( &quot;ObjetoA a2: &quot;  + a2); System. out .println( &quot;ObjetoA a3: &quot;  + a3); System. out .println( &quot;ObjetoA a4: &quot;  + a4); } }
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
package  com.targettrust.spring.i18n; import  java.util.Locale; import  org.springframework.context.MessageSource; import  org.springframework.context.MessageSourceAware; public   class  Pessoa  implements  MessageSourceAware{ private  String  nome ; private   int   idade ; private  MessageSource  ms ; // Getters e Setters public   void  setIdade( int  idade) {   if ( idade<=0 || idade >= 120 )   throw   new  IllegalArgumentException( ms .getMessage( &quot;idade.invalida&quot; , new    Object[]{idade},Locale. getDefault ()));   this . idade  = idade; } }
idade.invalida= A idade: {0} não é aceitável por que é muito velha ou menor do que 1 <? xml  version = &quot;1.0&quot;  encoding = &quot;UTF-8&quot; ?> < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean  id = &quot;messageSource“ class = &quot;org.springframework.context.support.ResourceBundleMessageSource“ > < property  name = &quot;basenames&quot; > < list > < value > mensagems </ value > </ list > </ property > </ bean > < bean id = &quot;pessoa“ class = &quot;com.targettrust.spring.i18n.Pessoa“ /> </ beans >
package  com.targettrust.spring.i18n; import  java.util.Locale; import  org.springframework.context.ApplicationContext; import  org.springframework.context.support.ClassPathXmlApplicationContext; public   class  Teste { public   static   void  main(String[] args) { ApplicationContext ac =  new   ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/i18n/Spring-beans.xml&quot; );   Locale. setDefault ( new  Locale( &quot;pt&quot; , &quot;BR&quot; )); setIdade (ac); } private   static   void  setIdade(ApplicationContext ac){ Pessoa p  = (Pessoa)ac.getBean( &quot;pessoa&quot; ); p.setNome( &quot;Crom&quot; ); try {   p.setIdade(200); } catch (RuntimeException re){   re.printStackTrace(); } } }
[object Object],[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

meetup adopting java8
meetup adopting java8meetup adopting java8
meetup adopting java8Filipe Portes
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2Ismael
 
Da Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualDa Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualMichael Castillo Granados
 
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!	TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática! tdc-globalcode
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoWilson Júnior
 
A Classe StringBuilder em Java
A Classe StringBuilder em JavaA Classe StringBuilder em Java
A Classe StringBuilder em JavaDevmedia
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesCarlos Santos
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3garux
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Implementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRCImplementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRCJosé Travado
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5garux
 

Mais procurados (20)

meetup adopting java8
meetup adopting java8meetup adopting java8
meetup adopting java8
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
 
Da Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualDa Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtual
 
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!	TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornado
 
PHP ao Extremo
PHP ao ExtremoPHP ao Extremo
PHP ao Extremo
 
A Classe StringBuilder em Java
A Classe StringBuilder em JavaA Classe StringBuilder em Java
A Classe StringBuilder em Java
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
 
PHP 7
PHP 7PHP 7
PHP 7
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Python 04
Python 04Python 04
Python 04
 
Implementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRCImplementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRC
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
Python 03
Python 03Python 03
Python 03
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object Calisthenics
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Python 02
Python 02Python 02
Python 02
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 

Destaque

301121 17 desarrollo_fase1_leiman_macias
301121 17 desarrollo_fase1_leiman_macias301121 17 desarrollo_fase1_leiman_macias
301121 17 desarrollo_fase1_leiman_maciasLeiman Delgan
 
Aprendre junts
Aprendre juntsAprendre junts
Aprendre juntsemmsantboi
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06Computer Science Club
 
Juomasekoituksia mobiilisti
Juomasekoituksia mobiilistiJuomasekoituksia mobiilisti
Juomasekoituksia mobiilistiPauliina Venho
 
Still life- By Henrik Bonnevier
Still life- By Henrik BonnevierStill life- By Henrik Bonnevier
Still life- By Henrik Bonneviermaditabalnco
 
20120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture0420120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture04Computer Science Club
 
HTML5 Games - Not Just for Gamers
HTML5 Games - Not Just for GamersHTML5 Games - Not Just for Gamers
HTML5 Games - Not Just for GamersRobin Hawkes
 
20120413 videorecognition konushin_lecture02
20120413 videorecognition konushin_lecture0220120413 videorecognition konushin_lecture02
20120413 videorecognition konushin_lecture02Computer Science Club
 
Hudba v knihovnách a globální trh s informacemi
Hudba v knihovnách a globální trh s informacemiHudba v knihovnách a globální trh s informacemi
Hudba v knihovnách a globální trh s informacemiKISK FF MU
 
One piece volume 14(118-126)
One piece volume 14(118-126)One piece volume 14(118-126)
One piece volume 14(118-126)Marcos Donato
 
Thanh cong cua marketing
Thanh cong cua marketingThanh cong cua marketing
Thanh cong cua marketingTruong Tho
 
Pairing with the queen
Pairing with the queenPairing with the queen
Pairing with the queenDiego Pacheco
 
Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...
Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...
Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...KISK FF MU
 
Tabernas antiguas de Madrid
Tabernas antiguas de MadridTabernas antiguas de Madrid
Tabernas antiguas de Madridmaditabalnco
 
Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...
Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...
Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...CYNTIA
 
20100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture0520100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture05Computer Science Club
 

Destaque (20)

301121 17 desarrollo_fase1_leiman_macias
301121 17 desarrollo_fase1_leiman_macias301121 17 desarrollo_fase1_leiman_macias
301121 17 desarrollo_fase1_leiman_macias
 
Aprendre junts
Aprendre juntsAprendre junts
Aprendre junts
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 
Juomasekoituksia mobiilisti
Juomasekoituksia mobiilistiJuomasekoituksia mobiilisti
Juomasekoituksia mobiilisti
 
Still life- By Henrik Bonnevier
Still life- By Henrik BonnevierStill life- By Henrik Bonnevier
Still life- By Henrik Bonnevier
 
20120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture0420120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture04
 
Ancianos
AncianosAncianos
Ancianos
 
HTML5 Games - Not Just for Gamers
HTML5 Games - Not Just for GamersHTML5 Games - Not Just for Gamers
HTML5 Games - Not Just for Gamers
 
REMI 2nd
REMI 2ndREMI 2nd
REMI 2nd
 
20120413 videorecognition konushin_lecture02
20120413 videorecognition konushin_lecture0220120413 videorecognition konushin_lecture02
20120413 videorecognition konushin_lecture02
 
Hudba v knihovnách a globální trh s informacemi
Hudba v knihovnách a globální trh s informacemiHudba v knihovnách a globální trh s informacemi
Hudba v knihovnách a globální trh s informacemi
 
One piece volume 14(118-126)
One piece volume 14(118-126)One piece volume 14(118-126)
One piece volume 14(118-126)
 
Miradas inocentes
Miradas inocentesMiradas inocentes
Miradas inocentes
 
Thanh cong cua marketing
Thanh cong cua marketingThanh cong cua marketing
Thanh cong cua marketing
 
Pairing with the queen
Pairing with the queenPairing with the queen
Pairing with the queen
 
Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...
Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...
Adam Kretschmer: Stav automatizovanych evidenci v pametovych institucich v CR...
 
Tabernas antiguas de Madrid
Tabernas antiguas de MadridTabernas antiguas de Madrid
Tabernas antiguas de Madrid
 
Trompito 1
Trompito 1Trompito 1
Trompito 1
 
Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...
Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...
Protección jurídica dPROTECCIÓN JURÍDICA DEL SOFTWARE Y EL DERECHO DE P.I. EN...
 
20100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture0520100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture05
 

Semelhante a Spring Capitulo 03

De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIElias Nogueira
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 
Combinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaCombinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaMilfont Consulting
 
Palestra Novidades da linguagem C# 6
Palestra Novidades da linguagem C# 6Palestra Novidades da linguagem C# 6
Palestra Novidades da linguagem C# 6Renato Haddad
 
Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviçosElias Nogueira
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVAWillian Magalhães
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
 
2009 05 20 Floripa Flex
2009 05 20 Floripa Flex2009 05 20 Floripa Flex
2009 05 20 Floripa FlexEduardo Kraus
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage apiSuissa
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Bruno Borges
 

Semelhante a Spring Capitulo 03 (20)

Spring Capitulo 02
Spring Capitulo 02Spring Capitulo 02
Spring Capitulo 02
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Beagajs
BeagajsBeagajs
Beagajs
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de API
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 
Combinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaCombinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma prática
 
Palestra Novidades da linguagem C# 6
Palestra Novidades da linguagem C# 6Palestra Novidades da linguagem C# 6
Palestra Novidades da linguagem C# 6
 
Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviços
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVA
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Java 07 Entrada Dados
Java 07 Entrada DadosJava 07 Entrada Dados
Java 07 Entrada Dados
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
2009 05 20 Floripa Flex
2009 05 20 Floripa Flex2009 05 20 Floripa Flex
2009 05 20 Floripa Flex
 
VRaptor4
VRaptor4VRaptor4
VRaptor4
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 

Mais de Diego Pacheco

Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Diego Pacheco
 
Continuous Discovery Habits Book Review.pdf
Continuous Discovery Habits  Book Review.pdfContinuous Discovery Habits  Book Review.pdf
Continuous Discovery Habits Book Review.pdfDiego Pacheco
 
Thoughts about Shape Up
Thoughts about Shape UpThoughts about Shape Up
Thoughts about Shape UpDiego Pacheco
 
Encryption Deep Dive
Encryption Deep DiveEncryption Deep Dive
Encryption Deep DiveDiego Pacheco
 
Management: Doing the non-obvious! III
Management: Doing the non-obvious! IIIManagement: Doing the non-obvious! III
Management: Doing the non-obvious! IIIDiego Pacheco
 
Design is not Subjective
Design is not SubjectiveDesign is not Subjective
Design is not SubjectiveDiego Pacheco
 
Architecture & Engineering : Doing the non-obvious!
Architecture & Engineering :  Doing the non-obvious!Architecture & Engineering :  Doing the non-obvious!
Architecture & Engineering : Doing the non-obvious!Diego Pacheco
 
Management doing the non-obvious II
Management doing the non-obvious II Management doing the non-obvious II
Management doing the non-obvious II Diego Pacheco
 
Testing in production
Testing in productionTesting in production
Testing in productionDiego Pacheco
 
Nine lies about work
Nine lies about workNine lies about work
Nine lies about workDiego Pacheco
 
Management: doing the nonobvious!
Management: doing the nonobvious!Management: doing the nonobvious!
Management: doing the nonobvious!Diego Pacheco
 
Dealing with dependencies
Dealing  with dependenciesDealing  with dependencies
Dealing with dependenciesDiego Pacheco
 
Dealing with dependencies in tests
Dealing  with dependencies in testsDealing  with dependencies in tests
Dealing with dependencies in testsDiego Pacheco
 

Mais de Diego Pacheco (20)

Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!
 
Continuous Discovery Habits Book Review.pdf
Continuous Discovery Habits  Book Review.pdfContinuous Discovery Habits  Book Review.pdf
Continuous Discovery Habits Book Review.pdf
 
Thoughts about Shape Up
Thoughts about Shape UpThoughts about Shape Up
Thoughts about Shape Up
 
Holacracy
HolacracyHolacracy
Holacracy
 
AWS IAM
AWS IAMAWS IAM
AWS IAM
 
CDKs
CDKsCDKs
CDKs
 
Encryption Deep Dive
Encryption Deep DiveEncryption Deep Dive
Encryption Deep Dive
 
Sec 101
Sec 101Sec 101
Sec 101
 
Reflections on SCM
Reflections on SCMReflections on SCM
Reflections on SCM
 
Management: Doing the non-obvious! III
Management: Doing the non-obvious! IIIManagement: Doing the non-obvious! III
Management: Doing the non-obvious! III
 
Design is not Subjective
Design is not SubjectiveDesign is not Subjective
Design is not Subjective
 
Architecture & Engineering : Doing the non-obvious!
Architecture & Engineering :  Doing the non-obvious!Architecture & Engineering :  Doing the non-obvious!
Architecture & Engineering : Doing the non-obvious!
 
Management doing the non-obvious II
Management doing the non-obvious II Management doing the non-obvious II
Management doing the non-obvious II
 
Testing in production
Testing in productionTesting in production
Testing in production
 
Nine lies about work
Nine lies about workNine lies about work
Nine lies about work
 
Management: doing the nonobvious!
Management: doing the nonobvious!Management: doing the nonobvious!
Management: doing the nonobvious!
 
AI and the Future
AI and the FutureAI and the Future
AI and the Future
 
Dealing with dependencies
Dealing  with dependenciesDealing  with dependencies
Dealing with dependencies
 
Dealing with dependencies in tests
Dealing  with dependencies in testsDealing  with dependencies in tests
Dealing with dependencies in tests
 
Kanban 2020
Kanban 2020Kanban 2020
Kanban 2020
 

Spring Capitulo 03

  • 1.  
  • 2.  
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. package com.targettrust.spring.extend; public abstract class PessoaService { private String nome ; private String telefone ; private String email ; public PessoaService() {} public String getNome() { return nome ; } public void setNome(String nome) { this . nome = nome; } public String getTelefone() { return telefone ; } public void setTelefone(String telefone) { this . telefone = telefone; } public String getEmail() { return email ; } public void setEmail(String email) { this . email = email; } }
  • 9. package com.targettrust.spring.extend; public class PessoaFisicaService extends PessoaService { private String cpf ; public PessoaFisicaService() {} public boolean validaCpf(){ return CpfUtils. validaCPF ( cpf ); } public void mostraPessoa(){ if (validaCpf()){ System. out .println( &quot;nome: &quot; + getNome() + &quot; telefone: &quot; + getTelefone() + &quot; email: &quot; + getEmail() + &quot; cpf: &quot; + cpf ); } else { System. out .println( &quot;Essa pessoa não tem um CPF Valido.&quot; ); } } public String getCpf() { return cpf ; } public void setCpf(String cpf) { this . cpf = cpf; } }
  • 10. package com.targettrust.spring.extend; public class PessoaFisicaService extends PessoaService { private String cpf ; public PessoaFisicaService() {} public boolean validaCpf(){ return CpfUtils. validaCPF ( cpf ); } public void mostraPessoa(){ if (validaCpf()){ System. out .println( &quot;nome: &quot; + getNome() + &quot; telefone: &quot; + getTelefone() + &quot; email: &quot; + getEmail() + &quot; cpf: &quot; + cpf ); } else { System. out .println( &quot;Essa pessoa não tem um CPF Valido.&quot; ); } } public String getCpf() { return cpf ; } public void setCpf(String cpf) { this . cpf = cpf; } }
  • 11. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean id = &quot;pessoaService&quot; class = &quot;com.targettrust.spring.extend.PessoaService&quot; abstract = &quot;true&quot; > < property name = &quot;nome&quot; value = &quot;Diego&quot; /> < property name = &quot;email&quot; value = &quot;pacheco@diego.com.spring&quot; /> < property name = &quot;telefone&quot; value = &quot;455-55-55&quot; /> </ bean > < bean abstract = &quot;false&quot; id = &quot;pessoaFisicaService&quot; class = &quot;com.targettrust.spring.extend.PessoaFisicaService&quot; parent = &quot;pessoaService&quot; > < property name = &quot;cpf&quot; value = &quot;47888971210&quot; /> </ bean > </ beans >
  • 12.
  • 13. package com.targettrust.spring.validate; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class Pessoa implements Validator{ private String nome ; private Integer idade ; public boolean supports(Class clazz) { return Pessoa. class .equals(clazz); } public void validate(Object target, Errors errors) { ValidationUtils. rejectIfEmpty (errors, &quot;nome&quot; , &quot;nome.vazio&quot; ); Pessoa p = (Pessoa) target; if (p.getIdade() < 0) { errors.rejectValue( &quot;idade&quot; , &quot;valor negativo&quot; ); } else if (p.getIdade() > 120) { errors.rejectValue( &quot;idade&quot; , &quot;velho de mais&quot; ); } } public String getNome() { return nome ; } public void setNome(String nome) { this . nome = nome; } public Integer getIdade() { return idade ; } public void setIdade(Integer idade) { this . idade = idade; } }
  • 14. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;true&quot; > < bean id = &quot;pessoa&quot; class = &quot;com.targettrust.spring.validate.Pessoa&quot; > < property name = &quot;nome&quot; value = &quot;Fulano&quot; /> < property name = &quot;idade&quot; value = &quot;-1&quot; /> </ bean > </ beans >
  • 15. package com.targettrust.spring.validate; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.Errors; public class Teste { public static void main(String[] args) { BeanFactory bf = new ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/validate/Spring-beans.xml&quot; ); Pessoa p = (Pessoa) bf.getBean( &quot;pessoa&quot; ); System. out .println( &quot;Nome: &quot; + p.getNome() + &quot; idade: &quot; + p.getIdade()); Errors e = new BeanPropertyBindingResult(p, &quot;Pessoa&quot; ); p.validate(p, e); for (Object es: e.getAllErrors()){ System. out .println(es); } } } Chamada manual !!!
  • 16.
  • 17.
  • 18.  
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. package com.targettrust.spring.beanpostprocessors; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; public class LogCreationBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System. out .println( &quot;Craindo bean: &quot; + beanName); return bean; } }
  • 24. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;false&quot; > < bean id = &quot;a&quot; class = &quot;com.targettrust.spring.beanpostprocessors.ObjetoA&quot; /> < bean id = &quot;b&quot; class = &quot;com.targettrust.spring.beanpostprocessors.ObjetoB&quot; /> < bean id = &quot;c&quot; class = &quot;com.targettrust.spring.beanpostprocessors.ObjetoC&quot; /> < bean class = &quot;com.targettrust.spring.beanpostprocessors.LogCreationBeanPostProcessor” /> </ beans >
  • 25. package com.targettrust.spring.beanpostprocessors; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Teste { public static void main(String[] args) { new ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/&quot; + &quot;beanpostprocessors/Spring-beans.xml&quot; ); } }
  • 26.
  • 27.
  • 28. package com.targettrust.spring.beanfactorypostprocessors; import java.text.SimpleDateFormat; import java.util.Date; public class DataService { private String pattern ; public String getPattern() { return pattern ; } public void setPattern(String pattern) { this . pattern = pattern; } public String showSysDate(){ SimpleDateFormat sdf = new SimpleDateFormat( pattern ); return sdf.format( new Date()); } }
  • 29. package com.targettrust.spring.beanfactorypostprocessors; import java.io.FileInputStream; import java.util.Map; import java.util.Properties; import java.util.Map.Entry; import org.springframework.beans.BeansException; import org.springframework.beans.FatalBeanException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; public class DatePatternRouterBeanFactoryPostProcessor implements BeanFactoryPostProcessor { public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { Properties p = new Properties(); try { p.load( new FileInputStream( &quot;./src/com/targettrust/spring/” + beanfactorypostprocessors/patterns.properties&quot; )); System. out .println( &quot;Patterns: &quot; + p); } catch (Exception e) { throw new FatalBeanException( &quot;Erro ao buscar patterns!&quot; ,e); } Map<Object,Object> beans = beanFactory.getBeansOfType(DataService. class ); for (Entry<Object, Object> e: beans.entrySet()){ System. out .println( &quot;Aplicando pattern em service: &quot; + e); DataService service = ((DataService)e.getValue()); service.setPattern(p.getProperty( &quot;pattern.&quot; + service.getPattern().replace( &quot;#&quot; , &quot;&quot; ))); } } }
  • 30. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;false&quot; > < bean id = &quot;brasilDateService&quot; class = &quot;com.targettrust.spring.beanfactorypostprocessors.DataService&quot; > < property name = &quot;pattern&quot; value = &quot;#brasil&quot; /> </ bean > < bean id = &quot;usDateService&quot; class = &quot;com.targettrust.spring.beanfactorypostprocessors.DataService&quot; > < property name = &quot;pattern&quot; value = &quot;#us&quot; /> </ bean > < bean class = &quot;com.targettrust.spring.beanfactorypostprocessors.DatePatternRouterBeanFactoryPostProcessor&quot; /> </ beans >
  • 31. package com.targettrust.spring.beanfactorypostprocessors; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Teste { public static void main(String[] args) { ApplicationContext ap = new ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/beanfactorypostprocessors/Spring-beans.xml&quot; ); System. out .println( &quot;Data Brasil pattern : &quot; + ((DataService)ap.getBean( &quot;brasilDateService&quot; )).showSysDate()); System. out .println( &quot;Data Us pattern : &quot; + (DataService)ap.getBean( &quot;usDateService&quot; )).showSysDate()); } }
  • 32.
  • 33.  
  • 34.  
  • 35.  
  • 36.
  • 37. package com.targettrust.spring.propertyeditor; public class Aluno { private String nome ; public Aluno() {} public Aluno(String nome) { super (); this . nome = nome; } public String getNome() { return nome ; } public void setNome(String nome) { this . nome = nome; } @Override public String toString() { return nome ; } }
  • 38. package com.targettrust.spring.propertyeditor; import java.util.List; public class Turma { private String nome ; private List<Aluno> alunos ; public Turma() {} public Turma(String nome, List<Aluno> alunos) { super (); this . nome = nome; this . alunos = alunos; } public String getNome() { return nome ; } public void setNome(String nome) { this . nome = nome; } public List<Aluno> getAlunos() { return alunos ; } public void setAlunos(List<Aluno> alunos) { this . alunos = alunos; } @Override public String toString() { return nome + &quot; alunos: &quot; + alunos .toString(); } }
  • 39. package com.targettrust.spring.propertyeditor; import java.beans.PropertyEditorSupport; public class AlunoEditor extends PropertyEditorSupport{ @Override public void setAsText(String text) throws IllegalArgumentException { Aluno a = new Aluno(text); setValue(a); } }
  • 40. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean id = &quot;turma“ class = &quot;com.targettrust.spring.propertyeditor.Turma&quot; > < property name = &quot;nome&quot; value = &quot;Curso-Spring&quot; /> < property name = &quot;alunos&quot; > < list > < value > Rod </ value > < value > Joe </ value > < value > Bart </ value > < value > Homer </ value > < value > Hammer </ value > </ list > </ property > </ bean > < bean id = &quot;customEditorConfigurer“ class = &quot;org.springframework.beans.factory.config.CustomEditorConfigurer“ > < property name = &quot;customEditors&quot; > < map > < entry key = &quot;com.targettrust.spring.propertyeditor.Aluno&quot; > < bean class = &quot;com.targettrust.spring.propertyeditor.AlunoEditor&quot; /> </ entry > </ map > </ property > </ bean > </ beans >
  • 41.
  • 42.  
  • 43. package com.targettrust.spring.event; import org.springframework.context.ApplicationEvent; public class FeriadoEvent extends ApplicationEvent{ private String data ; private static final long serialVersionUID = 1L; public FeriadoEvent(Object source,String data) { super (source); this . data = data; } public String getData() { return data ; } }
  • 44. package com.targettrust.spring.event; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; public class FeriadoListener implements ApplicationListener { public void onApplicationEvent(ApplicationEvent event) { if (event instanceof FeriadoEvent){ FeriadoEvent fe = (FeriadoEvent)event; System. out .println( &quot;Viva! Dia: &quot; + fe.getData() + &quot; é feriado. Uhhuu!!!&quot; ); } } }
  • 45. package com.targettrust.spring.event; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class RH implements ApplicationContextAware { private ApplicationContext ac ; public void pulicarFeriados(){ ac .publishEvent( new FeriadoEvent( this , &quot;01/01/08&quot; )); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { ac = applicationContext; } }
  • 46. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean id = &quot;rh&quot; class = &quot;com.targettrust.spring.event.RH&quot; /> < bean id = &quot;funcionarioEsperto &quot; class = &quot;com.targettrust.spring.event.FeriadoListener&quot; /> </ beans >
  • 47. package com.targettrust.spring.event; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Teste { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/event/Spring-beans.xml&quot; ); RH rh = (RH)ac.getBean( &quot;rh&quot; ); rh.pulicarFeriados(); } }
  • 48.
  • 49.
  • 50. package com.targettrust.spring.propertyplaceholderconfigurer; public class Instrutor { private String nome ; private int idade ; private String time ; private float altura ; // getters and Setters } nome = deigo idade = 22 altura = 1.85 Arquivo .properties
  • 51. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean class = &quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot; > < property name = &quot;location“ > < value > classpath:com/targettrust/spring/propertyplaceholderconfigurer/config.properties </ value > </ property > < property name = &quot;properties&quot; > < value > time=Grêmio </ value > </ property > </ bean > < bean id = &quot;I” class = &quot;com.targettrust.spring.propertyplaceholderconfigurer.Instrutor&quot; > < property name = &quot;nome&quot; value = &quot;${nome}&quot; /> < property name = &quot;idade&quot; value = &quot;${idade}&quot; /> < property name = &quot;time&quot; value = &quot;${time}&quot; /> < property name = &quot;altura&quot; value = &quot;${altura}&quot; /> </ bean > </ beans >
  • 52.
  • 53. package com.targettrust.spring.singletonbeanfactorylocator; public class ObjetoA {} <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;true&quot; > < bean id = &quot;A1&quot; class = &quot;com.targettrust.spring.singletonbeanfactorylocator.ObjetoA” /> </ beans > + A2 A3 A4
  • 54. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;false&quot; > < bean id = &quot;beanFactoryBean“ class = &quot;org.springframework.context.support.ClassPathXmlApplicationContext” > < constructor-arg > < list > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-A.xml </ value > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-B.xml </ value > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-C.xml </ value > </ list > </ constructor-arg > </ bean > < bean id = &quot;beanFactoryBean2“ class = &quot;org.springframework.context.support.ClassPathXmlApplicationContext“ > < constructor-arg > < list > < value > com/targettrust/spring/singletonbeanfactorylocator/Spring-beans-D.xml </ value > </ list > </ constructor-arg > </ bean > </ beans >
  • 55. package com.targettrust.spring.singletonbeanfactorylocator; import org.springframework.beans.factory.access.BeanFactoryLocator; import org.springframework.beans.factory.access.BeanFactoryReference; import org.springframework.beans.factory.access.SingletonBeanFactoryLocator; public class Teste { public static void main(String[] args) { BeanFactoryLocator bfl = SingletonBeanFactoryLocator. getInstance (); BeanFactoryReference bf = bfl.useBeanFactory( &quot;beanFactoryBean&quot; ); ObjetoA a1 = (ObjetoA)bf.getFactory().getBean( &quot;A1&quot; ); ObjetoA a2 = (ObjetoA)bf.getFactory().getBean( &quot;A2&quot; ); ObjetoA a3 = (ObjetoA)bf.getFactory().getBean( &quot;A3&quot; ); bf = bfl.useBeanFactory( &quot;beanFactoryBean2&quot; ); ObjetoA a4 = (ObjetoA)bf.getFactory().getBean( &quot;A4&quot; ); System. out .println( &quot;ObjetoA a1: &quot; + a1); System. out .println( &quot;ObjetoA a2: &quot; + a2); System. out .println( &quot;ObjetoA a3: &quot; + a3); System. out .println( &quot;ObjetoA a4: &quot; + a4); } }
  • 56.
  • 57. package com.targettrust.spring.i18n; import java.util.Locale; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceAware; public class Pessoa implements MessageSourceAware{ private String nome ; private int idade ; private MessageSource ms ; // Getters e Setters public void setIdade( int idade) { if ( idade<=0 || idade >= 120 ) throw new IllegalArgumentException( ms .getMessage( &quot;idade.invalida&quot; , new Object[]{idade},Locale. getDefault ())); this . idade = idade; } }
  • 58. idade.invalida= A idade: {0} não é aceitável por que é muito velha ou menor do que 1 <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean id = &quot;messageSource“ class = &quot;org.springframework.context.support.ResourceBundleMessageSource“ > < property name = &quot;basenames&quot; > < list > < value > mensagems </ value > </ list > </ property > </ bean > < bean id = &quot;pessoa“ class = &quot;com.targettrust.spring.i18n.Pessoa“ /> </ beans >
  • 59. package com.targettrust.spring.i18n; import java.util.Locale; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Teste { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/i18n/Spring-beans.xml&quot; ); Locale. setDefault ( new Locale( &quot;pt&quot; , &quot;BR&quot; )); setIdade (ac); } private static void setIdade(ApplicationContext ac){ Pessoa p = (Pessoa)ac.getBean( &quot;pessoa&quot; ); p.setNome( &quot;Crom&quot; ); try { p.setIdade(200); } catch (RuntimeException re){ re.printStackTrace(); } } }
  • 60.