Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

The import javax.annotation.PostConstruct cannot be resolved?

Alguém saberia me informar porque o PostConstruct ao é reconhecido pelo Eclipse?

package br.com.caelum;

import javax.annotation.PostConstruct;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;

import br.com.caelum.model.Categoria;
import br.com.caelum.model.Loja;
import br.com.caelum.model.Produto;

@Component
public class CriadorDeProdutos {

    @PersistenceContext
    private EntityManager em;

    @Autowired
    private JpaTransactionManager transactionManager;

    @PostConstruct
    public void init() {
        TransactionTemplate template = new TransactionTemplate(
                transactionManager);
        template.execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {

                Loja casaDoCodigo = new Loja();
                casaDoCodigo.setNome("Casa do Código");

                em.persist(casaDoCodigo);

                Loja musicalAlegre = new Loja();
                musicalAlegre.setNome("Musical Alegre");

                em.persist(musicalAlegre);

                Categoria tecnologia = new Categoria("Tecnologia");
                em.persist(tecnologia);

                Categoria musica = new Categoria("Música");
                em.persist(musica);

                Produto cursoDeViolao = new Produto();
                cursoDeViolao.setNome("Curso de Violão");
                cursoDeViolao.setLoja(musicalAlegre);
                cursoDeViolao.setPreco(49.0);
                cursoDeViolao
                        .setDescricao("Estude com os melhores professores e aprenda no seu ritmo, sem sair de casa.");
                cursoDeViolao.adicionarCategorias(tecnologia, musica);
                cursoDeViolao
                        .setLinkDaFoto("https://pbs.twimg.com/profile_images/378800000825434860/12136ee913ed4f44860914d44650144e.png");

                em.persist(cursoDeViolao);

                Produto livroDeArquitetura = new Produto();
                livroDeArquitetura
                        .setNome("Introduçao a Arquitetura Java e Design de projetos com Java");
                livroDeArquitetura.setLoja(casaDoCodigo);
                livroDeArquitetura.setPreco(30.0);
                livroDeArquitetura.adicionarCategorias(tecnologia);
                livroDeArquitetura
                        .setDescricao("Neste livro, os autores, conhecidos especialistas da "
                                + " área, apresentam muitos tópicos que aparecem com frequência"
                                + " na plataforma Java, incluindo desde modelagem e design das "
                                + "classes, até detalhes importantes das tecnologias mais utilizadas."
                                + "  Sempre com uma visão técnica e prática capaz de elucidar muitas "
                                + "questões enfrentadas tanto pelo profissional iniciante quanto por "
                                + "aquele que está adquirindo mais experiência na plataforma.");

                livroDeArquitetura
                        .setLinkDaFoto("http://www.arquiteturajava.com.br/img/capa-livro.png");

                em.persist(livroDeArquitetura);

                Produto livroDeSpring = new Produto();
                livroDeSpring.setNome("Vire o jogo com Spring Framework");
                livroDeSpring.setLoja(casaDoCodigo);
                livroDeSpring.setPreco(30.0);
                livroDeSpring.adicionarCategorias(tecnologia);
                livroDeSpring
                        .setDescricao("Criado para simplificar o desenvolvimento de aplicações Java, "
                                + "o Spring se tornou um dos frameworks de mais destaque dentro desse grande ambiente.  "
                                + "Aprenda muito mais que o básico do Spring, desde o tradicional Container de Inversão "
                                + "de Controle e Injeção de Dependências, passando pelos robustos módulos de segurança, "
                                + "transações, programação orientada a aspectos e também o fantástico módulo MVC, o SpringMVC.");

                livroDeSpring
                        .setLinkDaFoto("http://cdn.shopify.com/s/files/1/0155/7645/products/spring-framework-featured_large.png?v=1411567960");

                em.persist(livroDeSpring);

                Produto violao = new Produto();
                violao.setNome("Violão");
                violao.setLoja(musicalAlegre);
                violao.setDescricao("Excelente violão");
                violao.setPreco(500.0);
                violao.adicionarCategorias(musica);
                violao.setLinkDaFoto("http://www.marillac.g12.br/imgs/atividade%20complementar/violao.jpg");

                em.persist(violao);

                Produto flauta = new Produto();
                flauta.setNome("Flauta Doce");
                flauta.setLoja(musicalAlegre);
                flauta.setDescricao("Flauta doce");
                flauta.setPreco(300.0);
                flauta.adicionarCategorias(musica);
                flauta.setLinkDaFoto("http://i.mlcdn.com.br/1500x1500/flauta-doce-germanicayamaha-yrs-23g-204013000.jpg");

                em.persist(flauta);

            }
        });
    }

}
2 respostas
solução!

Olá Bernardo!

Se você tiver usando Spring Boot tenta adicionar essa dependência no seu pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Caso não esteja usando, use essa:

<dependency>
  <groupId>javax.annotation</groupId>
  <artifactId>javax.annotation-api</artifactId>
  <version>1.3.2</version>
</dependency>

Vê se ele reconhece, aguardo seu retorno!

Resolvi utilizando a primeira dependência.