Bean - JulianeMaran32/Java-with-Spring-Boot GitHub Wiki

🫘 O que é um Bean no Spring?

Um bean é um objeto que o Spring cria, guarda e gerencia por você.
Em vez de você usar new MinhaClasse(), o Spring cria esse objeto e te entrega pronto quando precisar.

🤖 Como o Spring sabe quais objetos (beans) ele deve criar?

Resposta simples: Através de anotações como @Component, @Service, @Repository, @Configuration e outras.

Essas anotações avisam ao Spring que uma determinada classe deve ser registrada como bean, ou seja, que o Spring deve controlar e injetar essa classe automaticamente quando for usada em outra parte do código.

🔍 Como o Spring encontra essas classes?

O Spring procura essas anotações em todas as classes dentro do pacote do seu projeto e subpacotes, desde que você tenha usado:

@SpringBootApplication

Essa anotação já ativa o component scan (busca automática por beans).

🧩 As anotações mais comuns para definir beans

1. @Component

É a anotação genérica. Serve para qualquer classe que você queira transformar em bean.

@Component
public class MeuServico {
    public void executar() {
        System.out.println("Executando lógica de negócio");
    }
}

2. @Service

É igual ao @Component, mas **indica que essa classe representa uma lógica de negócio (serviço).
Ajuda a organizar melhor seu código e deixa mais claro o papel da classe.

@Service
public class CalculadoraService {
    public int somar(int a, int b) {
        return a + b;
    }
}

3. @Repository

Também é igual ao @Component, mas indica que a classe é responsável por acessar o banco de dados.

O Spring entende que ali podem ocorrer exceções de acesso a dados e trata automaticamente (como convertendo exceções do JDBC para exceções do Spring).

@Repository
public class ProdutoRepository {
    public List<Produto> listar() {
        // lógica de acesso ao banco
    }
}

4. @Controller ou @RestController

Indica que a classe é um controlador, ou seja, que vai receber requisições HTTP.

  • @Controller → para MVC (retorna páginas/views).
  • @RestController → para APIs REST (retorna JSON).
@RestController
public class ProdutoController {

    @GetMapping("/produtos")
    public List<String> listar() {
        return List.of("Café", "Chá", "Suco");
    }
}

5. @Configuration

Indica que a classe contém métodos que criam beans manualmente, com @Bean.

@Configuration
public class Configuracao {

    @Bean
    public String saudacao() {
        return "Olá, mundo!";
    }
}

Nesse caso, o método saudacao() retorna um bean, e você pode injetar essa String em outras partes do sistema.

📦 Resumo em uma frase:

O Spring identifica os beans a partir de anotações como @Component, @Service, @Repository, @Controller, @Configuration, e passa a gerenciar essas classes automaticamente, criando e injetando os objetos conforme necessário.

⚠️ **GitHub.com Fallback** ⚠️