Spring - alandrade21/docsCompartilhados GitHub Wiki

Links Úteis

Anotações de beans

@Component | ----@Service | ----@Controller | ----@Repository (DAOs)

Escopo

Singleton default

@Scope("prototype")

Lifecycle callbacks

@PostConstruct

@PreDestroy

I18N

O arquivo de mensagens deve ter o nome nome_locale.properties, por exemplo, mensagens_pt_BR.properties

Use o método getMessage no context.

Resources

Carregar resources de baixo nível (arquivo do sistema de arquivos, por exemplo) pode ser feito com context.getResource. O argumento é uma string que pode ser:

Validation

A classe de validação deve implementar a interface Validator do Spring.

Use a classe ValidationUtils.

Field Formatting

Vários formatadores já fornecidos. API para declaração de novos com base na locale.

REST

  • @RestController: Anota o controlador, que é o ponto de entrada da chamada REST.
  • @RequestMapping("/greeting"): Anota o método que vai responder à uma chamada num determinado endereço.
  • @ResponseBody
  • @PathVariable

JPA Annotations

  • @Entity: Marca a classe como persistível.

  • @Table: Configura o nome da tabela. Opcional. Ou usa indexes ou unique constraints.

    @Table(name="tabela",
      indexes = {@Index(columnList = "col1, col2", name = "idx1", unique = true)},
      uniqueConstraints = {@UniqueConstraint(columnNames="col1, col2", name = "idx1")})
  • @Id: Indica que o atributo é PK

  • @GeneratedValue(strategy = GenerationType.IDENTITY): Configura o tipo de geração de PK.

  • @Column(name="nome da coluna", unique = true, nullable = false, length = 14): Configura a coluna no banco.

  • @OneToOne(fetch = FetchType.Lazy): one to one sempre deve ser eager.

  • @JoinColumn(name="col_id"): Coluna de join

  • @Enumerated(EnumType.STRING): Quando o campo possui umvalor enumerado.

  • @ManyToOne: Na classe que tem many, no atributo mapeado como a id da one referenciada.

  • @OneToMany(mappedBy = "coluna"): Na classe que tem one, no atributo lista. MappedBy aponta para o atributo marcado com ManyToOne. por padrão é Lazy.

  • @ManyToMany: Faz esse mapeamento dos dois lado.

    @ManyToMany
    @JoinTable(name="tabelaRelacionamento", joinColumns=@JoinColumn(name="idLocal"), inverseJoinColumns=@JoinColumn(name="idRemoto"))
⚠️ **GitHub.com Fallback** ⚠️