Skip to content

Commit

Permalink
Spring questions added
Browse files Browse the repository at this point in the history
  • Loading branch information
jdegand committed May 27, 2023
1 parent 7926eef commit d59b15f
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 1 deletion.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,11 @@
- [W3 Schools](https://www.w3schools.com/sql/sql_null_values.asp) - sql null values
- [Digital Ocean](https://www.digitalocean.com/community/tutorials/hibernate-native-sql-query-example) - hibernate native sql query example
- [Java Guides](https://www.javaguides.net/2018/11/guide-to-hibernate-native-sql-queries.html) - hibernate native sql queries
- [Baeldung](https://www.baeldung.com/java-dao-pattern) - Java DAO Pattern
- [Baeldung](https://www.baeldung.com/java-dao-pattern) - Java DAO Pattern
- [Rollbar](https://rollbar.com/blog/java-unknownformatconversionexception/) - unknown format conversion exception
- [Spring Docs](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/datasource/AbstractDriverBasedDataSource.html#getCatalog()) - AbstractDriverBasedDataSource
- [Stack Overflow](https://stackoverflow.com/questions/71130510/how-do-i-use-jdbc-template-to-query-a-select-where-first-letter-starts-with-sp) - jbdc template query where first letter starts with
- [Stack Overflow](https://stackoverflow.com/questions/8247970/using-like-wildcard-in-prepared-statement) - using like wildcard in prepared statement
- [Mkyong](https://mkyong.com/spring/spring-jdbctemplate-querying-examples/) - jdbctemplate querying examples
- [Spring Docs](https://docs.spring.io/spring-framework/reference/integration/scheduling.html) - scheduling
- [Stack Overflow](https://stackoverflow.com/questions/29832122/create-a-new-instance-of-component-in-spring-boot-framework) - create new instance of component in spring boot
42 changes: 42 additions & 0 deletions Spring/MovieRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.*;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import org.springframework.jdbc.core.BeanPropertyRowMapper;

class Movie {
public String name;
public int year;
public int rating;

public Movie(String name, int year, int rating) {
this.name = name;
this.year = year;
this.rating = rating;
}
}

@Repository
public class MovieRepository {

@Autowired
private JdbcTemplate template;

@PostConstruct
public void createTable() {
template.execute("CREATE TABLE movies (id bigint auto_increment primary key, name VARCHAR(50), year int, rating int)");
}

public void createMovie(String name, int year, int rating) {
template.update("INSERT INTO movies (id, name, year, rating) VALUES (?,?,?,?)",
null, name, year, rating);
}

public List<Movie> findMoviesByName(String nameStartsWith) {
return template.query("SELECT * FROM movies WHERE name LIKE '" + nameStartsWith + "%'",
(rs, rowNum) -> new Movie(rs.getString("name"), rs.getInt("year"), rs.getInt("rating")));
}
}
Binary file added Spring/MultipleDatabases.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Spring/TaskExecutor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions Spring/WeatherForecastService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.*;
import org.springframework.scheduling.*;
import org.springframework.scheduling.annotation.*;
import org.springframework.scheduling.concurrent.*;
import org.springframework.stereotype.*;

@FunctionalInterface
interface TemperatureMeasurementCallback {
public void temperatureMeasured(int temperature);
}
interface Thermometer {
public int measure();
}

@Configuration
@EnableScheduling // Test Case
@Import({FakeThermometer.class, WeatherForecastService.class})
class Config {

@Bean
public TemperatureMeasurementCallback callback() {
System.out.println("Registering TemperatureMeasurementCallback bean");
return (temperature) -> System.out.println(temperature);
}
}

@Component
@Scope("prototype") // Test Case
class FakeThermometer implements Thermometer {

private int currentTemperature = 21;

@Override
public int measure() { return currentTemperature++; }
}

@Service
public class WeatherForecastService {

@Autowired
private Thermometer thermometer;
@Autowired
private TemperatureMeasurementCallback callback;

@Scheduled(fixedRate=50) // Test Case
public void takeTemperatureMeasurement() {
int temperature = thermometer.measure();
callback.temperatureMeasured(temperature);
}
}

0 comments on commit d59b15f

Please sign in to comment.