The following was discovered as part of building this project:
- The project works with Java11, Google appengine, Google datastore, Spring data,Spring boot.
Reach out me for any furuther doubts: [email protected]
https://www.linkedin.com/in/saif40
Its an template project you can check the project for basic setup for the Java11, spring boot, Spring data and google datastore.
Add the following to your build.gradle
plugins {
id 'org.springframework.boot' version '2.4.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'org.springframework.experimental.aot' version '0.9.0'
}
ext {
set('springCloudGcpVersion', "2.0.0")
set('springCloudVersion', "2020.0.1")
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.google.cloud:spring-cloud-gcp-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation group: 'org.springframework.cloud', name: 'spring-cloud-gcp-starter-data-datastore', version: '1.2.7.RELEASE'
}
dependencyManagement {
imports {
mavenBom "com.google.cloud:spring-cloud-gcp-dependencies:${springCloudGcpVersion}"
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
you can find the complete build.gradle
in project gradle setup.
implementation group: 'org.springframework.cloud', name: 'spring-cloud-gcp-starter-data-datastore', version: '1.2.7.RELEASE'
this dependency will help you to use the spring data with google datastore.
create and app.yml file inside src/main/appengine
below will be sharing a example and you update your preferences.
runtime: java11
env: standard
service: testservice
instance_class: F2
runtime_config:
jdk: openjdk11
env_variables:
SPRING_PROFILES_ACTIVE: "dev"
handlers:
- url: /.*
script: this field is required, but ignored
manual_scaling:
instances: 1
As all you know more about the controller i'm not explaining about that more here. but if you are accessing the repository directly from the controller, use @Autowired
example shown below.
@Autowired
BookRepository repository;
Spring datarepository is the best thing when i worked in Spring so far, all your queries and saving all made super easy, you can save lot of time by using spring data repositoory. you can find the repository inside the project and the example below.
import com.scheduling.j11.entities.Books;
import org.springframework.cloud.gcp.data.datastore.repository.DatastoreRepository;
import java.util.List;
public interface BookRepository extends DatastoreRepository<Books, String> {
List<Books> findByBrand(String brand);
List<Books> findByBrandAndMerchantId(String brand, String merchantId);
List<Books> findByMerchantId(String merchantId);
}
Entity can be as same as jpa or objectify all you need to add the @Entity
( import org.springframework.cloud.gcp.data.datastore.core.mapping.Entity;
)
and for Id
use @Id
(import org.springframework.data.annotation.Id
);
add the following to the project
spring.cloud.gcp.datastore.enabled=true
spring.cloud.gcp.datastore.project-id=bookshop
spring.main.allow-bean-definition-overriding=true
and if you want to add new namespae
spring.cloud.gcp.datastore.namespace=new_namespace
if you haven't set up the gcloud follow the link and update
you have to create jar before using the deploying so once you done with the changes you have to create the build jar using
$ ./gradlew clean build
and the build will be ready.
one the build is ready you can deploy using
$ gcloud app deploy
For further reference, please consider the following sections:
- Official Gradle documentation
- Spring Boot Gradle Plugin Reference Guide
- Create an OCI image
- Spring Web
- GCP Support
- GCP Storage
- GCP Messaging
- Spring Native Reference Guide
The following guides illustrate how to use some features concretely:
- Building a RESTful Web Service
- Serving Web Content with Spring MVC
- Building REST services with Spring
- GCP Samples
- GCP Storage
- GCP Pub/Sub Sample
These additional references should also help you: