Java Springi blogi

Vaata eelmist teemat Vaata järgmist teemat Go down

whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 29.06.20 16:29

Tsauki!

Minust
Töötan hetkel vabakutselise arendajana. Teadmisi laialt, aga plaan on järgmisel aastal Java progejana kuskile tiimi liikuda. Tahaks selgeks saada Java Springi ja Teiega teekonda jagada. Olen omale 2 väiksemat projekti juba teinud - esimene oli Spring MVC'ga selline ToDo list, millele postmaniga saatsin päringuid ja teine Vue.js + Spring bootiga suhtlusportaali taoline lehekülg. Nendest juba tubli 1-2 aastat möödas ja mõtlesin, et saaks selle asja paremini selgeks. Tahaks ära kasutada veel tehnoloogiaid nagu Gradle, mis aitab ehitada hästi projekti ja Postgresql'i, sest tundub selline vabam Oraclega võrreldes. Kui fronti hakkan sellele miskipärast tegema, siis kasutaksin React.js.
Miks Spring?
Mind huvitab Java ning Spring on selle keele populaarseim raamistik, mida võiks endale selgeks teha.

Kuidas ma seda tegema hakkan?
Teeksin läbi mõned õpetused, jagan lõpptulemust ja siis mõtleks välja mingi projekti, millega kuskile suunas liikuda.

Spring booti õpetusi, mida hakkan jälgima:


Deploy
Vaatab kaugele selle projektiga jõuab, võib-olla projekti jaoks teen eraldi teema hiljem. Tahaks selle Raspberry Pi 4 4GB peale deployda, kus docker peale pandud.


Kui kellelgi veel paremaid spring booti õpetusi, java developer kohta pakkuda või projekti ideid, siis hmu ;)


Viimati muutis seda whitedoodle (02.07.20 20:29). Kokku muudetud 1 kord
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 29.06.20 17:01

29.06.20
Hakkasin siis kõige algelisemat spring io tutoriali läbima. Natuke muutsin õpetuses soovitatavaid parameetreid. Genesin sellise springi projekti omale:
Java Springi blogi LvdNxrF

Sai kiire /hello mappingu tehtud parameetriga, mis siis tervitab.
Kood:
@GetMapping("/hello")
 public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
 return String.format("Hello %s!", name);
 }
Java Springi blogi MfveYvX
+
The @RestController annotation tells Spring that this code describes an endpoint that should be made available over the web.




Proovime nüüd asjale vindi peale tõmmata. Tahaks, et tagastaks sama asja json kujul. Tõmbame lomboki külge build.gradle's:
Kood:
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

Java Springi blogi MuhFSzY

Sai eraldi controller tehtud, kuhu tõstsin selle hello meetodi ka ümber. Kasutan praegu mingit AtomicLong objekti, et seda id'd kätte saada. Tulevikus tuleks see süsteem ära muuta.

Kood:

@RestController
public class GreetingController {
    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return new Greeting(counter.incrementAndGet(), String.format(template, name));
    }
.
.

Greeting objekt tuli selline
Kood:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Greeting {

    private long id;
    private String content;


}
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 30.06.20 20:07

30.06.20

Panen nüüd JPA ja H2 andmebaasi külge. Hiljem keevitaks postgre andmebaasi asemele.

Gradle'sse dependencied:
Kood:
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
   runtimeOnly 'com.h2database:h2'
Nii palju kui ma aru olen saanud, siis JPA'ga vahet pole, mis andmebaas seal taga on ja seda saab lihtsasti ära vahetada koodi palju muutmata.

Tegin sellise Useri:
Kood:
@Entity
@Data
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String email;
    private String password;

    public User(String email, String password) {
        this.email = email;
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", email='" + email + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
UserRepository:
Kood:
public interface UserRepository extends CrudRepository<User, Long> {
    List<User> findByEmail(String email);
    User findById(long id);
}
Ja lõpetuseks sai salvestatud natukene andmeid ja välja lugeda/logida.
Kood:
@Bean
   public CommandLineRunner demo(UserRepository repository) {
      return (args) -> {
         // save a few users
         repository.save(new User("tonight@faval.eu", "enriqueIglesias<3"));
         repository.save(new User("pilvik@faval.eu", "pilvedeEmbusesSinaJaMina"));
         repository.save(new User("fvlbot@faval.eu", "loeks10000ni"));
         repository.save(new User("whitedoodle@faval.eu", "mingiSpringB00ti6pib"));
         log.info("Save user 'other@faval.eu': "+ repository.save(new User("other@faval.eu", "6ukokkutulekulekawe")).toString());

         // fetch all users
         log.info("Users found with findAll():");
         log.info("-------------------------------");
         for (User user : repository.findAll()) {
            log.info(user.toString());
         }
         log.info("");

         // fetch an individual user by ID
         User user = repository.findById(2L);
         log.info("User found with findById(1L):");
         log.info("--------------------------------");
         log.info(user.toString());
         log.info("");

         // fetch user by email
         log.info("User found with findByEmail('tonight@faval.eu'):");
         log.info("--------------------------------------------");
         repository.findByEmail("tonight@faval.eu").forEach(tonight -> {
            log.info(tonight.toString());
         });

         log.info("");
      };
   }
Lisasin koodi väikese punid, et oleks huvitavam teha.
Java Springi blogi QmHWet7
Töömaailmas praegu lambda funktsioonid fookuses, aga üritan springi tihti harjutada väikese hulga kaupa. Vaikselt asi areneb, olen enamus asjadest teadlik, aga kui basicud asjad üle vaadata, siis mingi infokild alati on kaasa võtta.
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 01.07.20 21:42

1.07.20

Vaatan, kuidas React.js ja Rest omavahel töötab. Genen uue projekti:
Java Springi blogi TBUFOBR
Make jar not war ;)

Siukse tuti tegin läbi: https://spring.io/guides/tutorials/react-and-spring-data-rest/

Ei hakka siin seda tutoriali lahti kirjutama. Tegin koodi enda arust paremaks kui seal õpetuses ja lühendasin lombokiga.
Pro tip, mille õppisin nortali õpetusest:
gradle dependency lühemaks tegemine (antud vs lühendatud) -
Kood:
compile group: 'com.github.eirslett', name: 'frontend-maven-plugin', version: '1.10.0'
vs
Kood:
compile 'com.github.eirslett:frontend-maven-plugin:1.10.0'

Põmst lisasin ühe tutoriali tarkuse siia lisaks, sest kõik apparently oskavad aint mavenit ju. Mõte selles, et tahaks gradlet kasutada ikka ja seal õpetuses mingi plugin teeb kõik su eest ära, et sa selle reacti sinna saaks installida. https://www.youtube.com/watch?v=2GPvZEfzy8A
Noo tuleb välja, et see ka väike komistuskivi, sest vennal mingid custom dependencied loodud ja siis ei saa õigesti buildida ja kirjutab ise skripti et buildida jne jne. Ühesõnaga, cancel see vidiju.

Bäkk to basics. Lähme teeme sama projekti Maveniga. Mis siin ikka aega kulutada, eks hiljem saab mõelda kui väga kiheleb gradle peale minna.

Leidsin siukse tutoriali: https://developer.okta.com/blog/2018/07/19/simple-crud-react-and-spring-boot
Väga kehv tutorial, midagi ei seleta. Tee ainult "copy-paste". Saan ise aru ja oskan googeldada kui millestki aru ei saa.. aga kui pole varem seda teinud, siis suht mõttetu tutorial imo. Aga vähemalt sai asja tööle. Mingid andmed ta sealt backist fronti siis luges, back ja front siis eraldi käima tõmmatud.
Java Springi blogi Sn1IJ74

Eks homme näeb, kas lähen gradle peale tagasi või mitte, natukene rohkem sain pihta nüüd kuidas see töötab ;)
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 02.07.20 20:25

02.07.20

Java Springi blogi IWasxGI

Nüüd saab neid JUG'e nüüd muuta/lisada/kustutada. Õpetus läks veel edasi, et see okta api security sinna külge panna, aga selleks vaja sinna kasutaja teha, mis liiga suur hassle. :D
Täna siuke väiksem edasi liikumine. Vaatasin veel koodi üle, mis siin copy paste kästi panna ilma pikema jututa.
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 08.07.20 21:35

Java Springi blogi 4jypHKr
Panin spring booti, jpa ja postgre omavahel kokku. Siuke õpetus oli päris hää selle jaoks: https://www.callicoder.com/spring-boot-jpa-hibernate-postgresql-restful-crud-api-example/
Tegin natuke teisi klasse sinna, et mõttega asja läbi teeksin. Arendan seda veel kompleksemaks. Postmaniga testin päringuid, kohe ei hakka fronti ehitama, keskendun springile, siis liigun kiiremini asjaga edasi.
Postgre jaoks kasutan pgadminit:
Java Springi blogi Vhnyd7M
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 09.07.20 17:03

Uus päev, uued teadmised :D

Hakkasin nüüd sellele viimasele tutorialile teste kirjutama. Jamasin suht kaua ühe probleemiga ehk mu tester ei leidnud üles controlleri ja repo beanse. Lahenduse leidsin lõpuks siit: https://github.com/spring-projects/spring-boot/issues/15061

Java Springi blogi NbJnaGg


Praegu sain 2 testi tehtud, aga nüüd hakkavad need ludinal tulema. :D
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 10.07.20 17:24

Kirjutasin juurde 2 integratsioonitesti ja projektide jaoks getmappingu et saab üksikult projekte vaadata ilma taskideta. Vasakult alt näeb umbes ära, mis testid olen kirjutanud.

Java Springi blogi NBBWXhI
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 20.07.20 19:39

Kirjutasin juurde 1 integratsioonitesti. Lisatakse projekt ja kaks taski andmebaasi ja siis küsitakse projekti id järgi kõik taskid. Kontrollin, et tagastatud taskide arv on 2.

Java Springi blogi TBfJcre
whitedoodle
whitedoodle

Liitus : 24/02/2013
Postitusi : 153

Postitaminewhitedoodle on 14.09.20 15:30

Teen praegu läbi sellist tutoriali Udemys: https://www.udemy.com/course/spring-hibernate-tutorial
Nats üle 3h läbitud 41st :D

Ütleks, et võiks olla rohkem advanced, aga saan aru, et tegijad erinevate taustadega ja pealkirjas ka et algajatele (kuigi see pigem concept, millega 0 taustaga vend ei alustaks).

Vaata eelmist teemat Vaata järgmist teemat Tagasi üles

Soovid reklaamidest vabaneda?

Selleks logi sisse või tee endale kasutaja.

Liitu foorumiga

Tee endale kasutaja ning osale aruteludes.


Tee uus kasutaja

Logi sisse

Omad foorumis juba kasutajat? Logi sisse.


Logi sisse

 
Permissions in this forum:
Sa ei saa vastata siinsetele teemadele