Bean - JuhMaran/Java-with-Spring-Boot GitHub Wiki
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.
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.
O Spring procura essas anotações em todas as classes dentro do pacote do seu projeto e subpacotes, desde que você tenha usado:
@SpringBootApplicationEssa anotação já ativa o component scan (busca automática por beans).
É 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");
}
}É 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;
}
}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
}
}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");
}
}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.
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.