1 - Spring-Boot 2
1 - Spring-Boot 2
3) The Spring Boot project aims to make building web application with Spring much
faster and easier. The guiding principle of Boot is convention over configuration.
6. Externalized Configurations
7. YAML Support
8. Embedded Containers
9. Actuators
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
1. Lab1.java
2. CustomerDAO.java
3. CustomerDAOImpl.java
4. Customer.java
5. CustomerRowMapper.java
6. JTCAppConfig.java
7. pom.xml
1) Lab1.java
package com.jtcindia.spring;
import java.util.List;
import org.springframework.context.annotation.*;
/*
* @Author : Som Prakash Rai
* @company : JTCINDIA
* */
public class Lab1 {
AnnotationConfigApplicationContext ctx=new
AnnotationConfigApplicationContext(JTCConfig.class);
CustomerDAO cdao=(CustomerDAO) ctx.getBean("custDAO");
// 1. addCustomer
Customer cust1 = new Customer(104, "SP", "SP@jtc", 9999, "Noida");
cdao.addCustomer(cust1);
// 2. getAllCustomers
System.out.println("getAllCustomers");
List<Customer> list=cdao.getAllCustomers();
list.forEach( cust -> System.out.println(cust) );
}
}
import java.util.List;
/*
* @Author : Som Prakash Rai
* @company : JTCINDIA
* */
public interface CustomerDAO {
public void addCustomer(Customer cust);
public List<Customer> getAllCustomers();
}
3) CustomerDAOImpl.java
package com.jtcindia.spring;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
/*
* @Author : Som Prakash Rai
* @company : JTCINDIA
* */
@Repository("custDAO")
public class CustomerDAOImpl implements CustomerDAO {
@Autowired
JdbcTemplate jdbcTemp;
//Constructors
//Setters and Getters
5) CustomerRowMapper.java
package com.jtcindia.spring;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
/*
* @Author : Som Prakash Rai
* @company : JTCINDIA
* */
public class CustomerRowMapper implements RowMapper<Customer>
{ @Override
public Customer mapRow(ResultSet rs, int rn) throws SQLException
{ Customer cust=new Customer();
cust.setCid(rs.getInt(1));
cust.setCname(rs.getString(2));
cust.setEmail(rs.getString(3));
cust.setPhone(rs.getLong(4));
cust.setCity(rs.getString(5));
return cust;
}
}
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
/*
* @Author : Som Prakash Rai
* @company : JTCINDIA
* */
@Configuration
@ComponentScan(basePackages = {"com.jtcindia.spring"}) public
class JTCAppConfig {
@Bean
public DataSource dataSource() {
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("com.mysql.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost:3306/myjtcdb");
bds.setUsername("root"); bds.setPassword("jtcsom");
bds.setInitialSize(10);
bds.setMaxActive(15);
return bds;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource ds)
{ return new JdbcTemplate(ds);
}
}
7) pom.xml
<project ……>
<modelVersion>4.0.0</modelVersion>
<groupId>com.jtcindia.spring</groupId>
<artifactId>Lab1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MyLab1</name>
<url>http://maven.apache.org</url>
<properties>
<java.version>1.8</java.version>
<spring.version>5.1.9.RELEASE</spring.version>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
2) AutoConfiguration
Most of the Beans will be configured by the Spring Container automatically.
Beans will be configured conditionally based availability of Classes in the
Classpath.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
#Database Properties
spring.datasource.url=jdbc:mysql://localhost:3306/myjtcdb
spring.datasource.username=root spring.datasource.password=jtcsom
#Hikari Properties
spring.datasource.hikari.connectionTimeout=20000
spring.datasource.hikari.maximumPoolSize=5
#Log Properties
logging.level.root=DEBUG
logging.pattern.console=%-5level %logger{36} - %msg%n
@Configuration
@ComponentScan(basePackages = {"com.jtcindia.springboot"})
public class JTCAppConfig {
9) Write the DAO and its Implementation class (Copy from Lab1)
CustomerDAO.java
CustomerDAOImpl.java
1. MyBootApp.java
2. CustomerDAO.java Same As Lab1
3. CustomerDAOImpl.java Same As Lab1
4. Customer.java Same As Lab1
5. CustomerRowMapper.java Same As Lab1
6. JTCAppConfig.java
7. application.properties
8. pom.xml
1) MyBootApp.java
package com.jtcindia.springboot;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
* @Author : Som Prakash Rai
* @company : JTCINDIA
* */
@SpringBootApplication
public class MyBootApp implements CommandLineRunner {
@Autowired
CustomerDAO cdao;
@Override
public void run(String... args)
{ System.out.println("MyBootApp..run() method-- Starts");
System.out.println ("------------------------------------ ");
// 1. addCustomer
Customer cust1 = new Customer(98, "SP", "SP@jtc", 9999, "Noida");
cdao.addCustomer(cust1);
6) JTCAppConfig.java
package com.jtcindia.springboot;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/*
* @Author : Som Prakash Rai
* @company : JTCINDIA
* */
@Configuration
@ComponentScan(basePackages = {"com.jtcindia.springboot"})
public class JTCAppConfig {
7) application.properties
#Database Properties
spring.datasource.url=jdbc:mysql://localhost:3306/jtcdb
spring.datasource.username=root spring.datasource.password=jtcsom
#Hikari Properties
spring.datasource.hikari.connectionTimeout=20000
spring.datasource.hikari.maximumPoolSize=5
#Log Properties
logging.level.root=DEBUG
logging.pattern.console=%-5level %logger{36} - %msg%n
<groupId>com.jtcindia.springboot</groupId>
<artifactId>Lab2</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>MyLab2</name>
<url>http://www.jtcindia.com</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>