Servlet [dispatcher]的Servlet.init引发异常org.springframework.beans.factory.UnsatisfiedDependencyException

如何解决Servlet [dispatcher]的Servlet.init引发异常org.springframework.beans.factory.UnsatisfiedDependencyException

创建spring mvc orm应用程序。有两个控制器,分别是playerController和TeamController,它们带有RequestMapping注释,以执行与这些控制器相关的动作。我使用Java配置web.xml,dispatcher和ApplicationContextConfig来定义数据源,sessionFactory和HibernateTransactionManager的Bean。使用Mysql数据库。

在运行应用程序时会出现错误- javax.servlet.ServletException:Servlet [dispatcher]的Servlet.init()抛出异常org.springframework.beans.factory.UnsatisfiedDependencyException

这是WebMvcConfig->

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.stackroute")
public class WebMvcConfig implements WebMvcConfigurer {

    /*
     * Define the bean for view resolver so that it can be used to resolve the JSP
     * files which are existing in /WEB-INF/views folder. A ViewResolver is capable
     * of mapping logical view names to actual views,such as a JSP or a HTML page.
     */

    @Bean
    public ViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver bean = new InternalResourceViewResolver();
        bean.setViewClass(JstlView.class);
        bean.setPrefix("/WEB-INF/views/");
        bean.setSuffix(".jsp");
        return bean;
    }
}

在这里,当我将componentScan基本软件包作为-com.stackroute.model

应用显示错误消息-GET / sa_spring_mvc_orm_assesssment / DEBUG o.s.web.servlet.DispatcherServlet没有映射-已完成404 NOT_FOUND

当我将basePackage更改为-com.stackroute

应用显示错误-

错误

例外

javax.servlet.ServletException: Servlet.init() for servlet [dispatcher] threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:832)
Root Cause

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'teamController' defined in file [/Users/vikash/Desktop/Assesment/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/sa_spring_mvc_orm_assessment/WEB-INF/classes/com/stackroute/controller/TeamController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'teamServiceImpl' defined in file [/Users/vikash/Desktop/Assesment/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/sa_spring_mvc_orm_assessment/WEB-INF/classes/com/stackroute/service/TeamServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.stackroute.dao.TeamDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
    org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1308)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1154)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
    org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:701)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:577)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:529)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:169)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:832)
Root Cause

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'teamServiceImpl' defined in file [/Users/vikash/Desktop/Assesment/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/sa_spring_mvc_orm_assessment/WEB-INF/classes/com/stackroute/service/TeamServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.stackroute.dao.TeamDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
    org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1308)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1154)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
    org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1237)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1164)
    org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
    org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
    org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1308)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1154)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
    org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:701)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:577)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:529)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:169)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:832)
Root Cause

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.stackroute.dao.TeamDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1644)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1203)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1164)
    org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
    org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
    org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1308)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1154)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
    org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1237)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1164)
    org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
    org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
    org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1308)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1154)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
    org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:701)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:577)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:529)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:169)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:832)

我应该给哪个basePackage?

com.stackroute是根包,所有其他类都在com.stackroute.model中 com.stackroute.controller

com.stackroute.config-包含webMvcConfig ApplicationContextConfig和WebAppAppInitialzer

与道和服务类似。

这是我的控制器和ApplicationContextConfig的代码

代码

@Controller
@RequestMapping(path="/team")
public class TeamController {

    /*
     *
     * 
     * 1. Display the list of existing Team from the persistence data. Each Team
     * element should contain Team name,Team lead and list of players 2. Add a new
     * team which should contain the Name,Lead 3. Delete an existing team 4. Update
     * an existing team
     * 
     */

    private TeamService teamService;
    
    @Autowired
    public TeamController(TeamService teamService) {
        this.teamService = teamService;
    }

    @GetMapping(value = "/")
//  @GetMapping(value = "/team")
    public String indexPage(ModelMap model) throws TeamDoesNotExistException{
        Player player = new Player();
        Team team = new Team();
        List<Team> teams = this.teamService.getAllTeams();
        model.addAttribute("teams",teams);
        model.addAttribute("team",team);
        model.addAttribute("player",player);
        return "index";
    }


//  @PostMapping(value = "/team/add")
    @PostMapping(value = "/add")
    public String addTeam(@ModelAttribute("team") Team newTeam,ModelMap model) {

        if (newTeam.getName().isEmpty() || newTeam.getLead().isEmpty() || newTeam.getPlayers().isEmpty()) {
            
            Player player = new Player();
            Team team = new Team();
            model.addAttribute("player",player);
            model.addAttribute("team",team);
            model.addAttribute("teams",teamService.getAllTeams());
            return "index";
        }

        try {
            teamService.createTeam(newTeam);
            model.addAttribute("team",newTeam);
            model.addAttribute("teamPlayers",newTeam.getPlayers());
        } catch (TeamAlreadyExistException e) {
            model.addAttribute("teamErrorMessage",e.toString());
            return "index";
        }

        return "redirect:/";
//      return "redirect:/team";

    }


//  @PostMapping(value = "/team/update")
    @PostMapping(value = "/update")
    public String updateTeam(@ModelAttribute("team") Team newTeam,teamService.getAllTeams());
            return "index"; 
        }

        try {
            teamService.updateTeam(newTeam);
            model.addAttribute("team",newTeam.getPlayers());
        } catch (TeamDoesNotExistException e) {
            model.addAttribute("teamErrorMessage",e.toString());
            e.printStackTrace();
            return "index";
        }

        return "redirect:/index";
    }

//  @GetMapping("/team/delete")
    @GetMapping("/delete")
    public String deleteTeam(@RequestParam("name") String teamName,ModelMap model) {

        if(teamName.equals(""))
        {
            Player player = new Player();
            Team team = new Team();
            model.addAttribute("player",teamService.getAllTeams());
            return "index";
        }
        
        try {
            teamService.deleteTeam(teamName);

        } catch (TeamDoesNotExistException e) {
            model.addAttribute("errorMessage",e.toString());
            e.printStackTrace();
            return "index";
        }

        return "redirect:/";
//      return "redirect:/team";

    }
    

//  @GetMapping("/team/players")
    @GetMapping("/players")
    public String getTeamPlayers(@RequestParam("name") String teamName,ModelMap model) {

        try {
            List<Player> players = teamService.getAllPlayers(teamName);
            model.addAttribute("teamPlayers",players);
            for (Player player : players) {
                model.addAttribute("team",player.getTeam());
            }
        } catch (TeamDoesNotExistException e) {

            model.addAttribute("teamErrorMessage",e.toString());
            e.printStackTrace();
        }

        return "redirect:/index";

    }

}



@Controller
@RequestMapping(path= "/player")
public class PlayerController {

    /*
     * 
     * 
     * 1. Display the list of existing Player from the persistence data. Each Player
     * element should contain emailId,name,and details. 2. Add a new player which
     * should contain the emailId,and details 3. Delete an existing player 4.
     * Update an existing player
     * 
     */

    private PlayerService playerService;

    @Autowired
    public PlayerController(PlayerService playerService) {
        this.playerService = playerService;
    }

//  @GetMapping("/player")
//  @RequestMapping(value ="player",method=RequestMethod.GET)
    @GetMapping("/")
    public String indexPage(ModelMap model) {

        List<Player> players = playerService.getAllPlayers();

        model.addAttribute("teamPlayers",players);

        for (Player player : players) {
            model.addAttribute("teams",player.getTeam());
            model.addAttribute("player",player);
        }

        return "index";
    }

//  @PostMapping(value = "player/addPlayer")
    @PostMapping(value = "/addPlayer")
    public String addPlayer(@ModelAttribute("player") Player newPlayer,ModelMap model)
            throws PlayerAlreadyExistException {
        if (newPlayer.getDetails().isEmpty() || newPlayer.getEmailId().isEmpty() || newPlayer.getName().isEmpty()
                || newPlayer.getName().isEmpty()) {

            Player player = new Player();
            Team team = new Team();
            model.addAttribute("player",team);
            return "index";

        }

        try {
            playerService.addPlayer(newPlayer);
            model.addAttribute("player",newPlayer.getTeam());
            model.addAttribute("teamPlayers",playerService.getAllPlayers());
            return "redirect:/";
        } catch (PlayerAlreadyExistException e) {
            model.addAttribute("errorMessage",e.toString());
            e.printStackTrace();
            return "index";
        }

    }



//  @GetMapping("player/delete")
    @GetMapping("/delete")
    public String deletePlayer(@RequestParam("emailId") String emailId,ModelMap model) {

        try {
            playerService.deletePlayer(emailId);
            return "redirect:/";
        } catch (PlayerDoesNotExistException e) {
            model.addAttribute("errorMessage",e.toString());
            e.printStackTrace();
            return "index";
        }

    }

//  @GetMapping("player/get")
    @GetMapping("/get")
    public String getPlayer(@RequestParam("emailId") String emailId,ModelMap model) {

        try {
            Player player = this.playerService.getPlayer(emailId);
            model.addAttribute("player",player);
            return "redirect:/";

        } catch (PlayerDoesNotExistException e) {
            e.printStackTrace();
            model.addAttribute("getPlayerErrorMessage",e.toString());
            return "index";
        }

    }


//  @PostMapping(value = "player/update")
    @PostMapping(value = "/update")
    public String updatePlayer(@ModelAttribute("player") Player newPlayer,ModelMap model) {

        if (newPlayer.getDetails().isEmpty() || newPlayer.getEmailId().isEmpty() || newPlayer.getName().isEmpty()
                || newPlayer.getName().isEmpty()) {
            Player player = new Player();
            Team team = new Team();
            model.addAttribute("player",team);
            return "index";
        }

        try {
            playerService.updatePlayer(newPlayer);
            return "redirect:/index";

        } catch (PlayerDoesNotExistException e) {
            model.addAttribute("errorMessage",e.toString());
            return "index";
        }

    }

}


@Configuration
@EnableTransactionManagement
@PropertySource("classpath:db.properties")
public class ApplicationContextConfig {

    // Read db properties with @Value annotation and store private variables
    // see the variables names in db.properties file of resources folder.
    // MYSQL_USER
    // MYSQL_PASSWORD
    // MYSQL_DRIVER
    // MYSQL_URL

    @Value("${MYSQL_USER}")
    private String userName;

    @Value("${MYSQL_PASSWORD}")
    private String password;

    @Value("${MYSQL_DRIVER}")
    private String driver;

    @Value("${MYSQL_URL}")
    private String url;


    /*
     * Define the bean for DataSource. In our application,we are using MySQL as the
     * dataSource. To create the DataSource bean,we need to know: 1. Driver class
     * name 2. Database URL 3. UserName 4. Password
     */


    @Bean("datasource")
    public DataSource getDataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(password);
        return dataSource;

    }

    @Bean
    public LocalSessionFactoryBean getSessionFactory(DataSource dataSource) throws IOException {
        LocalSessionFactoryBean loclSessionFactoryBean = new LocalSessionFactoryBean();
        loclSessionFactoryBean.setDataSource(dataSource);
//      loclSessionFactoryBean.setPackagesToScan(new String[] { "com.stackroute.model" });

        Properties properties = new Properties();

        properties.put("hibernate.dialect","org.hibernate.dialect.MySQL5InnoDBDialect");

        properties.put("hibernate.show_sql","true");

//      properties.put("hibernate.hbm2ddl.auto","auto");

        loclSessionFactoryBean.setHibernateProperties(properties);
        loclSessionFactoryBean.setAnnotatedClasses(Player.class,Team.class);
        loclSessionFactoryBean.afterPropertiesSet();
        return loclSessionFactoryBean;

    }



    @Bean
    public HibernateTransactionManager getHibernateTransactionManager(SessionFactory sessionFactory) {

        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory);
        return transactionManager;

    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-