= SpringBoot =
== Example ==
=== pom.xml ===
{{{#!highlight xml
4.0.0
hello
test-spring-boot
0.1.0
org.springframework.boot
spring-boot-starter-parent
1.4.0.RELEASE
org.springframework.boot
spring-boot-starter-thymeleaf
org.mariadb.jdbc
mariadb-java-client
1.4.4
commons-dbcp
commons-dbcp
1.4
org.springframework
spring-jdbc
4.3.2.RELEASE
hello.Application
org.springframework.boot
spring-boot-maven-plugin
spring-milestone
http://repo.spring.io/libs-release
spring-milestone
http://repo.spring.io/libs-release
}}}
=== src/main/java/hello/GreetingController.java ===
{{{#!highlight java
package hello;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.ArrayList;
@Controller
public class GreetingController {
private final Logger logger = LoggerFactory.getLogger(GreetingController.class);
@Autowired
DummyDAO dummyDAO;
public GreetingController(){
logger.debug("Greeting controller created.");
}
@RequestMapping("/greeting")
// http://localhost:8080/greeting?name=nnnn
public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
logger.info("Greeting endpoint called.");
model.addAttribute("name", name);
return "greeting";
}
@RequestMapping(value="/dummy",produces="application/json")
@ResponseBody
// http://localhost:8080/dummy
public List dummy(){
List list= new java.util.ArrayList();
Dummy dummy = new Dummy();
dummy.setFieldA("AAA");
dummy.setFieldB("CCC");
list.add(dummy);
Dummy dummy2 = new Dummy();
dummy2.setFieldA("AAA2");
dummy2.setFieldB("CCC2");
list.add(dummy2);
return list;
}
@RequestMapping(value="/dummyname",produces="application/json")
@ResponseBody
// http://localhost:8080/dummyname
public String getDummyName(){
return dummyDAO.getNameFromDummy();
}
}
}}}
=== src/main/java/hello/Application.java ===
{{{#!highlight java
package hello;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ComponentScan
@EnableAutoConfiguration
public class Application {
private static Logger logger;
public static void main(String[] args) {
logger = LoggerFactory.getLogger(Application.class);
logger.info("Starting application");
SpringApplication.run(Application.class, args);
}
@Bean(name="basicDataSource",destroyMethod="close")
public BasicDataSource createBasicDataSource(){
logger.info("Creating basicDataSource");
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("org.mariadb.jdbc.Driver");
bds.setUrl("jdbc:mariadb://localhost:3306/springmvchtml");
bds.setUsername("usertest");
bds.setPassword("usertest");
bds.setInitialSize(3);
return bds;
}
/*
@Bean(name="jdbcTemplate")
public JdbcTemplate jdbcTemplate(){
logger.info("Creating jdbcTemplate");
return new JdbcTemplate( basicDataSource() );
}
*/
@Bean(name="jdbcTemplate")
public JdbcTemplate createJdbcTemplate(@Autowired @Qualifier("basicDataSource") BasicDataSource bds ){
logger.info("Creating jdbcTemplate");
return new JdbcTemplate( bds );
}
}
}}}
=== src/main/java/hello/ThreadTimer.java ===
{{{#!highlight java
package hello;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.MessageFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
@Component
public class ThreadTimer extends Thread {
private int delaySeconds;
private Logger logger;
private boolean running;
private Object monitor=new Object();
private ArrayList