春季启动错误“ TrainerController中的字段存储库需要找不到TrainerRepo类型的Bean。” 。”

时间:2020-04-21 16:37:13

标签: java spring spring-boot maven

我正在制作一个Spring启动项目,运行时说:

“在com.example.trainerplanner.trainerController.TrainerController中的字段存储库需要一个类型为'com.example.trainerplanner.model.domain.TrainerRepository'的bean。” 我已经清理了.m2目录,并尝试添加/删除许多不同的依赖项。

package com.example.trainerplanner;

@ComponentScan({"com.example.trainerplanner.model.domain"})
@EnableAutoConfiguration
@EnableJpaRepositories(basePackageClasses = {TrainerRepository.class, CategoryRepository.class})
@SpringBootApplication
public class TrainerplannerApplication {
    private static final Logger log = LoggerFactory.getLogger(TrainerplannerApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(TrainerplannerApplication.class, args);
    }

    @Bean
    public CommandLineRunner trainerDemo(CategoryRepository crepository, TrainerRepository trepository) {
        return (args) -> {
            log.info("Save some exercises");
            //Tässä kohdassa tehdään uudet kategoriat "c repositoryyn".
            //Ensiksi on yläkropan päälihakset ja sitten alakropan 

            crepository.save(new Category("Biceps")); //Hauikset
            crepository.save(new Category("Triceps")); //Ojentajat
            crepository.save(new Category("Chest")); //Rinta
            crepository.save(new Category("Shoulders")); //Olkapäät
            crepository.save(new Category("Back")); //Selkä

            crepository.save(new Category("Quadriceps")); //Etureidet
            crepository.save(new Category("Hamstrings")); //Takareidet
            crepository.save(new Category("Calves")); //Pohkeet
            crepository.save(new Category("Glutes")); //Pakarat

            trepository.save(new Trainer("Bicep curl", 8, 3, crepository.findByName("Biceps").get(0)));
            trepository.save(new Trainer("Tricep extension", 8, 3, crepository.findByName("Triceps").get(0)));
            trepository.save(new Trainer("Squat", 8, 3, crepository.findByName("Quadriceps").get(0)));

           User userYksi = new User("user", "$2y$12$4iGWyQs5hC6ibe5Pq7ochekppUZcSfeIV.tjgZIuSobVA8B5vOhXK", "USER");
            //Molemmat salasanat hashattu BCryptillä, roundit oli 12 ja 9 
            User userKaksi = new User("admin", "$2y$06$K9UJzObPGyroQKlkTzWWz.BlUurpYCMFelyvM/2AVYSbzogvd3.zq", "ADMIN");


            urepository.save(userYksi);
            urepository.save(userKaksi);



        log.info("fetch all exercises");
            for (Trainer trainer : trepository.findAll()) {
            log.info(trainer.toString());

    };
    };}

这是springbootapp

@Controller
@Component
@EnableJpaRepositories
public class TrainerController {

    @Autowired
    private TrainerRepository trepository; 

    @Autowired
    private CategoryRepository crepository;

    //Req. mappingeissä nähdään mikä menee urlin loppuun. esim. localhost:8080/trainerlist palauttaa trainerlist thymeleafsivun
    //Metodit eri toiminnoille, esim lisää, poista, lista, tallenna.
    @RequestMapping(value= {"/", "/trainerlist"})
    public String trainerList(Model model) {    
        model.addAttribute("trainers", trepository.findAll());
        return "trainerlist";
    }

    @RequestMapping(value = "/add")
    public String addTrainer(Model model){
        model.addAttribute("trainer", new Trainer());
        model.addAttribute("category", crepository.findAll());
        return "addtrainer";
    }     

    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public String save(Trainer trainer){
        trepository.save(trainer);
        return "redirect:trainerlist";
    }    
    //Poistaa ID:n avulla trainerin ja palauttaa //trainerlist-sivun
    @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
    public String deleteTrainer(@PathVariable("id") Long trainerId, Model model) {
        trepository.deleteById(trainerId);
        return "redirect:../trainerlist";
    }     
}

控制器类

@Repository

public interface CategoryRepository extends CrudRepository<Category, Long> {

    List<Category> findByName(String name);

}

CategoryRepo和TrainerREpo相同,但名称不同。

@Component
public class TrainerModel {

    public String Trainer(@RequestParam(value="name")String name, Integer reps, Integer sets, Model model) {
        model.addAttribute("name", name);
        model.addAttribute("reps", reps);
        model.addAttribute("sets", sets);

        return "index";
    }


}

这是TrainerModel类

@Component
@Entity
public class Trainer {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    private String name;
    private Integer reps, sets;

    @ManyToOne
    @JoinColumn(name = "categoryid")
    @JsonManagedReference

    private Category category;

    public Category getCategory() {
        return category;
    }

    public void setCategory(Category category) {
        this.category = category;
    }

    public Trainer() {
        //Tyhjä
    }

    public Trainer(String name, Integer reps, Integer sets, Category category) {
        super();
        this.name = name;
        this.reps = reps;
        this.sets = sets;
        this.category =category;
    }

    //Asetetaan getterit ja setterit Traineriin.
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getReps() {
        return reps;
    }

    public void setReps(Integer reps) {
        this.reps = reps;
    }

    public Integer getSets() {
        return sets;
    }

    public void setSets(Integer sets) {
        this.sets = sets;
    }



    @Override
    public String toString() { //Jos kategoria tyhjä niin palautetaan ensimmäinen kohta, muuten else-kohta.
        if (this.category != null)
            return "Trainer [id=" + id + ", name=" + name + ", reps=" + reps + ", =" + sets + " sets =" + this.getCategory() + "]";     
        else
            return "Trainer [id=" + id + ", name=" + name + ", reps=" + reps + ", sets=" + sets + "]";
    }


}

这是培训师课程

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>trainerplanner</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>trainerplanner</name>
    <description>Trainer planner for exercising</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

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


        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Pom xml,使用spring initialzr重新完成了整个项目,但没有效果。

0 个答案:

没有答案