Oi Adenir,
Basicamente quando você coloca a anotação @Bean, você está dizendo pro Spring que quer criar esse objeto e deixar ele disponível para outras classes utilizarem ele como dependência, por exemplo.
Se a anotação @Bean está no método, é importante que a classe em si tenha alguma anotação que indique pro Spring que a classe deve ser "processada". Pode colocar, por exemplo a anotação @Component na classe em si.
Sem essa anotação o método não é invocado.
Para os parâmetros, ele vai buscar algum bean que satisfaça o parâmetro, e vai dar erro se não encontrar, ou se encontrar duas definições para o mesmo parâmetro. É meio que assim que ele vai saber "qual é o certo".
Um exemplo disso: nesse código que você postou, você estava criando o bean JpaTransactionManager
. Se em algum outro lugar você tentar criar um bean que precisa de um JpaTransactionManager
, ele vai dar erro da forma como está seu código, pois como você mencionou, o método não foi invocado e por consequência,o bean não foi criado.
Espero que tenha ajudado!