Hi,
I’m also struggling with that problem: When deploying my TestCode I’m getting a NPE for the autowired PersonService on that line:
if ( personService.addPerson(person) > 0){
Here’s the UI class:
[code]
@SpringUI
public class EquipmentDBUI extends UI {
Logger logger = LoggerFactory.getLogger(EquipmentDBUI.class);
@Autowired
PersonService personService;
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = EquipmentDBUI.class)
public static class Servlet extends VaadinServlet {
}
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
Person person = new Person();
person.setFirstName("FName");
person.setLastName("LName");
person.setAge(20);
person.setPlace("Place");
if ( personService.addPerson(person) > 0){
logger.info("Person saved successfully");
}
String t="";
for(Person p : personService.getAllPerson()){
t=t+" "+(p.toString());
}
layout.addComponent(new Label("Database Content: "+t ));
}
}
[/code]This is the PersonService Class:
[code]
@Service
public class PersonService {
@Autowired
private JdbcTemplate jdbcTemplate;
public int addPerson(Person person){
jdbcTemplate.execute(“DROP TABLE person IF EXISTS”);
jdbcTemplate.execute("CREATE TABLE person( first_name VARCHAR(150), "
+ “last_name VARCHAR(150), age INTEGER, place VARCHAR(100)”);
String sql = "INSERT INTO person(first_name, last_name, age, place) VALUES(?,?,?,?)";
return jdbcTemplate.update(sql, person.getFirstName(),
person.getLastName(), person.getAge(), person.getPlace());
}
public List getAllPerson(){
return jdbcTemplate.query(“SELECT * FROM person”, new RowMapper(){
public Person mapRow(ResultSet rs, int arg1) throws SQLException {
Person p = new Person();
p.setAge(rs.getInt("age"));
p.setFirstName(rs.getString("first_name"));
p.setLastName(rs.getString("last_name"));
p.setPlace(rs.getString("place"));
return p;
}
});
}
}
[/code]the Person class:
[code]
public class Person {
private String firstName;
private String lastName;
private int age;
private String place;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String toString(){
StringBuilder builder = new StringBuilder();
builder.append(this.getFirstName())
.append(", “)
.append(this.getLastName())
.append(”, “)
.append(this.getPlace())
.append(”, ")
.append(this.getAge());
return builder.toString();
}
}
[/code]the application.properties:
spring.datasource.platform=hsqldb
and the pom.xml
[code]
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
<groupId>equipmentdb</groupId>
<artifactId>equipmentdb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>equipmentdb</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
org.springframework.boot
spring-boot-starter-jdbc
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-bom</artifactId>
<version>7.5.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
[/code]Would be very nice if someone has got a hint for me.
Regards Chris