由于这几天刚刚接触到springboot今天想做一下对数据库的crud竟然连最基本的添加操作都屡屡失败,尝试了各种办法始终无效,请哪位大神给小弟看一下,其中的缘由!
项目是由maven搭建的:controller里面的代码:
package com.bd.Controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bd.Service.UserService;
import com.bd.pojo.User;
/**
 * @RestController相当于@Controller+@ResponseBody
 * @author Administrator
 * 
 */
@RestController
@EnableAutoConfiguration
@RequestMapping("/user")
public class UserController 

private UserService userService;
/**
 * 保存的用户信息
 */
@RequestMapping("/addUserMessage")
public User addUserMessage(@RequestParam("name")String user_name,@RequestParam("password")String user_password)
{
User user=new User();
user.setUser_name(user_name);
user.setUser_password(user_password);
System.out.println(user.toString());
User user1=userService.save(user);
return user;
}

public UserService getUserService() {
return userService;
} public void setUserService(UserService userService) {
this.userService = userService;
} public static void main(String[] args)
{
SpringApplication.run(UserController.class, args);
}
}Service里面的代码:
package com.bd.Service;
import org.springframework.data.repository.CrudRepository;
import com.bd.pojo.User;
public interface UserService extends CrudRepository<User,Integer>
{
}pojo里面的代码:
package com.bd.pojo;import java.io.Serializable;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name="t_name")
public class User implements Serializable
{
private static final long serialVersionUID = 1L;
//用户的Id
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer user_id;
//用户的姓名
@Column(length=30,nullable=false,unique=false)
private String user_name;
//用户的密码
@Column(length=30,nullable=false,unique=false)
private String user_password;
//无参构造器
public User() {
super();
}
//有参构造器
public User(Integer user_id, String user_name, String user_password) {
super();
this.user_id = user_id;
this.user_name = user_name;
this.user_password = user_password;
}
//get和set方法
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password;
}
//toString方法
@Override
public String toString() {
return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_password=" + user_password + "]";
}
}pom.xml里的依赖:
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bjsxt</groupId>
<artifactId>SpringBootOneDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
         </dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
所遇到的空指针异常:  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.2.RELEASE)
User [user_id=null, user_name=小明, user_password=1234567]这是注入的对象
2017-05-20 16:25:47.731 ERROR 4140 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root causejava.lang.NullPointerException: null
at com.bd.Controller.UserController.addUserMessage(UserController.java:36) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_73]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_73]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_73]
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_73]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.6.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) ~[tomcat-embed-core-8.5.6.jar:8.5.6]

解决方案 »

  1.   

    UserController.java:36。36行为空???
      

  2.   

    不是,是在执行第三十六行的代码时,抛出了空指针异常,User对象中的值也从前台也获取到了。
      

  3.   

    应该是userService没有注入吧?
      

  4.   

    在UserController中的private UserService userService的上面使用这个注解:@Autowired后会出现如下的异常:
    2017-05-21 09:31:40.899  INFO 7912 --- [           main] utoConfigurationReportLoggingInitializer : 
    Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
    2017-05-21 09:31:41.087 ERROR 7912 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 
    ***************************
    APPLICATION FAILED TO START
    ***************************
    Description:
    Field userservice in com.bd.Controller.UserController required a bean of type 'com.bd.service.UserServiceIntrface' that could not be found.
    Action:
    Consider defining a bean of type 'com.bd.service.UserServiceIntrface' in your configuration.
    找了很多的资料,但没有发现好的解决办法呀!继续求助大神,多谢了
      

  5.   

    userservice上少了一个注解
      

  6.   

    你userservice的实现类写过没有?实现类上加上@service注解没有?
      

  7.   

    创建了UseService的实现类,对UserService接口和继承自别的接口的方法进行了空实现。在实现类的上面加了@Service。还是不行的!晕死。package com.bd.service.Impl;import java.util.List;import org.springframework.data.domain.Example;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.domain.Sort;
    import org.springframework.stereotype.Service;import com.bd.pojo.User;
    import com.bd.service.UserServiceIntrface;@Service
    public class UserServiceImpl implements UserServiceIntrface { @Override
    public List<User> findAll() {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public List<User> findAll(Sort sort) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public List<User> findAll(Iterable<Integer> ids) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public <S extends User> List<S> save(Iterable<S> entities) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public void flush() {
    // TODO Auto-generated method stub

    } @Override
    public <S extends User> S saveAndFlush(S entity) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public void deleteInBatch(Iterable<User> entities) {
    // TODO Auto-generated method stub

    } @Override
    public void deleteAllInBatch() {
    // TODO Auto-generated method stub

    } @Override
    public User getOne(Integer id) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public <S extends User> List<S> findAll(Example<S> example) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public <S extends User> List<S> findAll(Example<S> example, Sort sort) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public Page<User> findAll(Pageable pageable) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public <S extends User> S save(S entity) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public User findOne(Integer id) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public boolean exists(Integer id) {
    // TODO Auto-generated method stub
    return false;
    } @Override
    public long count() {
    // TODO Auto-generated method stub
    return 0;
    } @Override
    public void delete(Integer id) {
    // TODO Auto-generated method stub

    } @Override
    public void delete(User entity) {
    // TODO Auto-generated method stub

    } @Override
    public void delete(Iterable<? extends User> entities) {
    // TODO Auto-generated method stub

    } @Override
    public void deleteAll() {
    // TODO Auto-generated method stub

    } @Override
    public <S extends User> S findOne(Example<S> example) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public <S extends User> Page<S> findAll(Example<S> example, Pageable pageable) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public <S extends User> long count(Example<S> example) {
    // TODO Auto-generated method stub
    return 0;
    } @Override
    public <S extends User> boolean exists(Example<S> example) {
    // TODO Auto-generated method stub
    return false;
    }}