Ich habe angefangen, von Java aus zu programmieren. Der Zweck war, es in meiner Arbeit zu nutzen, Im Moment mache ich hauptsächlich Webdienste als Hobby. Ich war ursprünglich interessiert, weil ich hörte, dass Ruby on Rails der Mainstream in der persönlichen Entwicklung und in den Unternehmungen ist. Obwohl Java auch amateurhaft ist, ist das Erlernen einer anderen Sprache zu teuer, und ich dachte, es wäre gut, wenn es als Webdienst gestaltet werden könnte.
Selbst mit dem Java-Framework habe ich mit Spring Boot entwickelt, das neu und einfach und schnell zu entwickeln ist. Von der Entwicklung bis zur Veröffentlichung mit Spring Boot konnte ich tun, was ich wollte. Trotzdem war ich neugierig auf Ruby On Rails, aber andererseits war ich in gewissem Maße auch an Spring Boot gebunden. Ich fand es ein wenig cool, ein anderes Framework als andere zu verwenden, und plante daher, es weiterhin so zu verwenden, wie es ist.
Das war vor ungefähr 3 Wochen.
Ich habe mir den Webdienst ausgedacht, den ich erstellen wollte, und diesmal habe ich mit der Entwicklung begonnen, um ihn in wenigen Wochen zu veröffentlichen. Ich war jedoch süchtig nach der Twitter-Login-Authentifizierung. Natürlich hatte ich Probleme, weil es nicht gut funktioniert hat, also habe ich verschiedene Dinge untersucht, aber die Informationen zur Twitter-Authentifizierung mit Spring Boot (ich möchte Spring Social und Spring Security verknüpfen) sind extrem klein, selbst wenn sie in Englisch enthalten sind. .. Ich habe keinen von ihnen ausprobiert und es hat nicht funktioniert. Ich habe es hier 2 Tage lang benutzt. (Ungefähr 8 Stunden) Um ehrlich zu sein, gab es viele Teile, in denen ich den Verarbeitungsprozess nicht verstehen konnte. Ich denke, es gab auch eine Möglichkeit, die offizielle Referenz von Grund auf nachzuschlagen und selbst zu implementieren. Ich denke, es ist in Ordnung, sich so viel Zeit zu nehmen, um die ursprünglichen Funktionen zu implementieren, aber ich hatte den starken Wunsch, allgemeine Teile wie die Twitter-Authentifizierung ehrlich zu kopieren und einzufügen. Als ich es in Ruby on Rails nachgeschlagen habe, habe ich viele Beispiele gefunden und die Implementierung war einfach.
Danach möchte ich Rails recherchieren und Webdienste individuell und schnell implementieren. Als Antwort auf die Anfrage Ich fand Ruby On Rails eindeutig geeignet. Obwohl es das Lernen kostet, sollte es effizienter sein, wenn Sie in wenigen Monaten umsteigen. Wir haben beschlossen, die Serviceentwicklung zu stoppen und darauf umzusteigen. Ich habe auch von VScode zu Atom gewechselt.
Ich habe ungefähr 2 Wochen (40-50 Stunden) studiert. Lesen Sie die Ruby-Edition der Punktinstallation und das Ruby on Rails-Tutorial im Zug und während der Mittagspause Es ist, als würden Sie Ihre Hände bewegen, nachdem Sie nach Hause zurückgekehrt sind, um es umzusetzen.
Ruby on Rails Tutoria wurde übersprungen und das Durchlesen → Implementieren → Durchlesen dauerte ungefähr 3 Wochen. Von hier aus plane ich, die Teile zu studieren, die ich beim Erstellen des Dienstes nicht verstehe.
Spring Boot vs Ruby on Rails Ruby on Rails war das Beste!
Wahnsinnig wichtig. Zumal es niemanden gibt, der als Selbstwissenschaftler leicht zuhören kann Die Aktivität des Google-Lehrers wird zu einem wichtigen Thema.
Spring Boot: Spring Boot hat nicht viele Informationen im Web. Also suchte ich nach einem Nachschlagewerk, konnte aber nicht sagen, ob es gut oder schlecht war, da es nur 4 Arten von Auswahlmöglichkeiten und wenige Buchbesprechungen gab. Ich hatte keine Reserve in der Buchhandlung in meiner Nachbarschaft, also ging ich nach Shinjuku, um sie zu kaufen.
Ruby on Rails: Ich habe dieses Mal nicht 1 Yen für das Lernen bezahlt. Ruby on Rails-Tutorials, Online-Lerndienste für Anfänger Es war ein sehr einfach zu befolgendes Framework, da Sie durch Suchen viel lernen können. Wir haben reichlich Proben, daher können wir davon ausgehen, dass wir die zukünftige Entwicklung beschleunigen werden.
Spring Boot: Java installieren, passieren, Maven installieren, passieren, Es dauerte ungefähr eine Stunde, um es zu benutzen. Anfänger sind auf einem frustrierenden Niveau.
Ruby on Rails: Ich benutze MAC, aber es war so einfach, dass ich vergessen habe, wie man es macht. ※Vergessen.
Spring Boot: Gehen Sie zu Spring Initializer (https://start.spring.io/) und erstellen Sie ein Paket. Ich weiß immer noch nicht, was ich in die Gruppen- und Artiface-Elemente einfügen soll, und es gibt viele Auswahlelemente.
Ruby on Rails: Die Entwicklung kann schnell mit neuen Schienen von der Konsole aus gestartet werden. Es scheint, dass der DB-Typ auch als Option angegeben werden kann.
Spring Boot: Standardmäßig kann nichts getan werden, daher müssen Sie die Platzierungsregeln festlegen und den Ordner selbst erstellen. Zuerst kannte ich die beste Vorgehensweise nicht und fragte mich, ob dies in Ordnung war, aber ich schaffte es mit meiner eigenen MVC.
Quellordner von Pochipochi:
Ruby on Rails: Wenn Sie ein Paket mit Rails new erstellen, werden automatisch Ordner für verschiedene Zwecke wie Modell, Ansicht und Konfiguration erstellt. Auch wenn Sie sich nicht für das Quellcode-Layout interessieren, wird es gemäß der Standardeinstellung organisiert, was für Anfänger hilfreich ist. Sie können die übliche einfache Arbeit des automatischen Generierens weglassen.
Automatisch generierter Ordner Quellordner:
Spring Boot: Es wird von Pom (Maven) verwaltet. Die beschriebenen Elemente sind wie folgt.
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Ruby on Rails: Es wird von einer Gem-Datei verwaltet. Die beschriebenen Elemente sind die gleichen. Ist es ein bisschen einfach?
Gemfile
gem 'rails', '~> 5.2.0'
Spring Boot:
Der Controller verarbeitet die Zuordnung von URLs und Ansichten sowie die Übergabe von Werten.
Da die Zuordnung über mehrere Dateien hinweg beschrieben wird, ist welche URL welche Ansicht und welcher Controller
Ich verliere oft den Überblick darüber, ob es damit zusammenhängt. value =" / "
ist die entsprechende URL mav.setViewName (" index ")
Suchen und Anzeigen einer Vorlage (HTML-Datei) mit dem Namen index. Es gibt verschiedene andere Definitionsmethoden.
indexController.java
@Controller
public class indexContoroller{
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView showIndex (ModelAndView mav){
mav.setViewName("index");
return mav;
}
}
Ruby on Rails:
Die URL-Zuordnung ist in routers.rb definiert.
Nur die URL-Zuordnung wird vom Spring Boot-Controller ausgeschnitten. Es ist gut lesbar, weil es aufgelistet werden kann. get '/ help', to: 'static_pages # help'
hat' / help 'als URL
Eine Klasse mit Verarbeitung, die von 'static_pages # help' ausgeführt werden soll.
routers.rb
Rails.application.routes.draw do
get '/help', to: 'static_pages#help'
static_pages_controller.rb
class StaticPagesController < ApplicationController
def help;
#hogehoge
end
ends
Spring Boot: Wenn Sie DB verwenden möchten, bereiten Sie eine Datenbank vor, erstellen Sie eine Tabelle, Danach müssen Sie mehrere Klassen für die DB-Verbindung vorbereiten. Die Operation wird abstrahiert, aber die Anzahl der Schritte zum Schreiben von Daten ist nicht gering.
Es ist etwas lang, beschreibt aber die Klasse, die für die Bearbeitung der Member-Tabelle vorbereitet wurde.
Member.java
entspricht der Member table
und empfängt die Daten.
Sie können die Abfrage mit MemberRepository.java
anpassen.
Der tatsächliche Zugriff ist "@Autowired MemberRepository Repository" in der Klasse, die Sie verwenden möchten Erstellen Sie eine Repository-Instanz in und verwenden Sie sie als "repository.findById (id);".
JpaRepository <Member, Integer>
verursacht einen Fehler, wenn Sie den Typ des Primärschlüssels der Tabelle nicht angeben.
MemberRepository.java
public interface MemberRepository extends JpaRepository<Member, Integer> {
public Member findByUsername(String username);
public boolean existsByUsername(String username);
}
Klasse entsprechend der Tabelle:
Member.java
Entity
@Table(name = "member")
public class Member implements UserDetails {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
// private Long userid;
private int userid;
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String displyname;
public Member() {
super();
}
public String getDisplyname() {
return displyname;
}
public int getUserid() {
return userid;
}
public void setDisplyname(String displyname) {
this.displyname = displyname;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@Override
public String getPassword() {
return this.password;
}
@Override
public String getUsername() {
return this.username;
}
public String getMail() {
return this.displyname;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
Ruby on Rails:
Schienen erzeugen Modell" Tabellenname "Inhalt: Text
Wenn Sie den Befehl wie ausführen, werden die Tabelle und die für die Operation erforderliche Klasse automatisch generiert.
Sie können plötzlich wie unten gezeigt aus der Datenbank lesen und schreiben.
m = "Tabellenname".new
m.find_by()`
Ich habe mich bisher noch nie direkt mit der DB verbunden. Mit Rails vergisst man fast die Existenz von DB.
Spring Boot: Ich habe die Funktion zum Hochladen von Bildern in Spring Boot implementiert, aber es war ziemlich schwierig. Hochladen und Validieren in HTML und JS, Fügen Sie nach dem Empfang den Pfad der Datei in die Datenbank ein und speichern Sie die Datei lokal. Ich musste den Prozess von Grund auf neu schreiben.
Ruby on Rails: In Bezug auf das Hochladen von Bildern gibt es ein Juwel namens CarrierWave. Es kann mit etwa 1/3 der Verarbeitung von Spring Boot implementiert werden. Der Frühling hat viele nützliche Funktionen, aber Rails ist besser. Ich habe einen guten Eindruck, wenn es um Webentwicklung geht.
Spring Boot: Tatsächlich wird Spring Boot auch mit Tomcat gebündelt, daher ist dies ein Unentschieden. Wenn es sich um den Standardport 80 handelt, kann er nicht lokal auf dem MAC gestartet werden. Daher müssen Sie die Portnummer angeben und starten.
Ruby on Rails: Die Portnummer 3000 scheint die Standardeinstellung zu sein, sodass Sie nichts tun müssen
Rails hat im Hintergrund viel mühsame Arbeit, Ich schreibe ein Programm, aber es fühlt sich an, als würde ich ein Puzzle oder ein Spiel spielen. Was Spring Boot betrifft, kann die Funktion nach Durchlaufen verschiedener Verfahren implementiert werden, sodass das Team solide war. Ich denke, dass es für große Anwendungen geeignet ist, aber auf der Ebene der persönlichen Entwicklung Die aktuelle Schlussfolgerung ist, dass Sie diese Enge nicht brauchen.