Bean - JulianeMaran32/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:
@SpringBootApplication
Essa 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.