- D1Rect: Nagy "hülyétkapokazapróktól" topik
- droidic: Így beszélhetsz élő emberrel EA supportban
- sziku69: Fűzzük össze a szavakat :)
- Gátoljuk meg játékaink halálát!
- btz: Internet fejlesztés országosan!
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Magga: PLEX: multimédia az egész lakásban
- Luck Dragon: Asszociációs játék. :)
- hcl: MS Office365 Linuxon
- MasterDeeJay: Noname 1TB-os SATA SSD teszt
Új hozzászólás Aktív témák
-
F1rstK1nq
aktív tag
Megértem. Tényleg embere válogatja.
Egyébként Spring Boot olyan szépen autoconfigolja, hogy öröm belekezdeni.Ránéztem, nem rossz dolog ez a Mustache sem.
Viszont, most ez az AngularJS 2 + Spring keltette fel az érdeklődésem, hogy megemlítettétek, biztos kipróbálom valami hobbiprojektben a közeljövőben.(#9158) Aethelstone: Nekem sincs jó véleményem Vaadin-ról, sőt nagyon megutáltam a projekt végére, pedig még a Vaadin Spring integrációt is használtuk. CustomLayout-tal még hagyján, de amit kigenerál magából néha enélkül, az vicc. Mindegy, egy Vaadin Certification-re jó volt a tudás, projekt után, de nem igazán tervezek rá visszatérni, ha nem muszáj.
-
F1rstK1nq
aktív tag
Én kedvencem Spring + Thymeleaf kombó, Bootstrap-vel fűszerezve.
Valaki próbálta? Ajánlom. -
F1rstK1nq
aktív tag
válasz
Taoharcos #9125 üzenetére
Lehet én vagyok a maradi, de nem egyszerűbb/hatékonyabb így? mvnrepository, majd megkeresed és bemásolod a megfelelő dependency-t a pom-odba?
-
F1rstK1nq
aktív tag
Érdekes amit írsz, bizonyos szinten érhető is, de szerintem ez abszolút szubjektív. (még ha te nem is annak érzed)
SLF4J oldaláról: "We used to recommend that loggers members be declared as instance variables instead of static. After further analysis, we no longer recommend one approach over the other."
Ott van egy jó kis táblázat a pro/kontra érvekre, de ő sem akar kimondott állást foglalni, hogy osztály vagy példány változó legyen a logger.
Régebben erről már olvastam egy kisebb vélemény ütközést stackoverflow-n is.
Akkor engem meggyőzött a példányváltozós logger használat és úgy kötöttem ki végül itt, hogy kényelmes nekem a logger példány inject-álás prototype-ként. -
F1rstK1nq
aktív tag
Nem tudom kinek mennyire új dolog ez, de leírom, mivel doksiban nem nagyon tűnt fel.
Spring 4.3-mal bejött az InjectionPoint class. CDI-ben már régebb óta van ilyen. Nekem ez abból az szempontból volt érdekes, hogy ennek a segítségével használtam CDI környezetben eddig a Loggereket. (inject-áltam, nekem ez így kényelmesebb volt, mint a standard megoldás)Íme spring oldalon a megvalósítás:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public Logger logger(InjectionPoint injectionPoint){
return LoggerFactory.getLogger(injectionPoint.getMember().getDeclaringClass());
}(SL4FJ a facade)
Ezt ugye csak be kell szúrni a megfelelő osztályokba és kész:
@Autowired
private Logger logger;Mit gondoltok? Tetszik/nem tetszik?
Jobban szeretitek a hagyományos megoldást?private final Logger logger = LoggerFactory.getLogger(getClass().getName());
-
F1rstK1nq
aktív tag
Én is ezt hittem sokáig, hogy elég a Hikari függőséget betenni a pom-ban, aztán kidebugoltam a közelmúltban és láttam, hogy így az alap tomcat-jdbc datasource-t szúrja be.
Szóval kell a
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
.Majd checkold azért te is légyszí, ha lesz rá időd.
-
F1rstK1nq
aktív tag
Nem tudom Karma, hogy csinálja, mert lehet máshogy is, de nekem ez tűnik a legegyszerűbbnek, én így szoktam.
A pom-ba berakod a dependency-t, verzió nem kell ugye, mert Spring Boot a parent, azt ő intézi.
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>Majd az application.properties-be ezt a sort:
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
Mivel a default, a tomcat-jdbc datasource.Majd a megfelelő értékekből létrehozza a datasource-ot a Spring Boot.
pl.:spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
spring.datasource.url=jdbc:hsqldb:mem:test
spring.datasource.username=sa
spring.datasource.password= -
F1rstK1nq
aktív tag
A Head First Design Patterns könyvhöz még nem volt ugyan szerencsém, de nagyon dicsérik.
-
F1rstK1nq
aktív tag
Ha nem probléma az angol, akkor a legjobb könyv a témában, ami ad egy részletes leírást a nyelvről: Thinking in Java
Abszolút kezdőknek is ajánlott és mérföldekkel jobb, mint a magyar "társaik". -
-
F1rstK1nq
aktív tag
válasz
Dave-11 #8191 üzenetére
Ez a klasszikus megoldás:
String fileName = "res01.res";
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource(fileName);
if (resource != null) {
File file = new File(resource.getFile());
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}Viszont, ha érdekel más módszer is, itt még tudsz csemegézni Java8-as megoldások közül is. Viszont amit ezekben a megoldásokban nem látsz, hogy hogyan éred el a resources alatti fájlokat. Így:
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource(fileName); -
F1rstK1nq
aktív tag
Spring-re Spring in Action.
Nagyon jó könyv, szájbarágós, angolja sem vészes, ha attól félnél.
-
F1rstK1nq
aktív tag
válasz
Aethelstone #8032 üzenetére
Így van, én is erre szántam a "még legmagasabb értelmes interfészt megadni" részemet, de lehet a tiéd jobb megfogalmazás.
-
F1rstK1nq
aktív tag
válasz
pvt.peter #8029 üzenetére
Így megmarad az az előnyöd, hogy csak a Lista implementációját változtatod meg példányosításkor, a kód többi része változatlan marad. (Például ha úgy döntesz, ArrayList helyett LinkedList-et használsz később)
Clean Code szerint egyébként érdemes szinte minden esetben a referencia értéknek a még legmagasabb értelmes interfészt megadni.
-
F1rstK1nq
aktív tag
válasz
Aethelstone #7656 üzenetére
Természetesen meglehet és teljesen jó az a megoldás is, csak az hivatalosan nem típusbiztos és nem refactor barát.
(én idea zom az is megtudja amúgy
)
@ ComponentScan(basePackages={"package1", "package2"})
Kinek mi? Én egyszerűbbnek tartom a marker interfacet.
Egy elméleti példával be is bizonyítom, hogy miért:
-van egy top level package-ed (hu.somebody.main)
-ez alatt lesz 3 package-ed ahol a component-ek leszek definialva:
(hu.somebody.main.package1, hu.somebody.main.package2, hu.somebody.main.package3)
-a marker interface-t beteszed a top level pakage-edbe:package hu.somebody.main;
public interface Application {}Ez az alap felállás. Akkor a 2 opció scannelésre:
@Configuration
@ComponentScan(basePackageClasses = Application.class)
class ApplicationConfig {}vagy
@Configuration
@ComponentScan(basePackages={"hu.somebody.main.package1", "hu.somebody.main.package2", "hu.somebody.main.package3"})
class ApplicationConfig {}Melyik tűnik egyszerűbbnek?
-
F1rstK1nq
aktív tag
Ez nem szar, így van kitalálva Springben. Amit megjelölsz @Component annotációval (vagy valamelyik stereotype-jával) az az osztályod lesz Component és működnek rajta a spring specifikus dolgok (pl: Autowired). Ez természetesen a Spring álltal ajánlott implicit mód (Implicit bean discovery and automatic wiring). Lehet expliciten is @Bean annotációval Javaconfig-ból, meg xml config-ból is, de most kicsit elkalandoztam.
Amit te keresel, erre van egy jó kis "best practice" Springben: Csinálj egy üres marker interface-t abba a csomagodba ahol scannelni szeretnél és akkor arra az interfacere hivatkozz a ComponentScan-nél.
pl.: @Configuration
@ComponentScan(basePackageClasses = Application.class)
class ApplicationConfig {}marker interface:
public interface Application {} -
F1rstK1nq
aktív tag
válasz
Oppenheimer #7629 üzenetére
Jól tetted. Egyébként apró észrevétel, de én úgy tudom Spring Boot-nál ExceptionalBackend/src/main/java/spring-config.xml fájl teljesen fölösleges, nyugodtan törölheted.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Formula-1
- Samsung Galaxy Watch4 és Watch4 Classic - próbawearzió
- Telekom mobilszolgáltatások
- Pécs és környéke adok-veszek-beszélgetek
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Az adatközpontok szolgálatába állítja a nap- és szélenergiát a Meta
- Milyen program, ami...?
- droidic: Így beszélhetsz élő emberrel EA supportban
- Vigneau interaktív lokálblogja
- Milyen házat vegyek?
- További aktív témák...
- Honor Magic 7 Lite 256GB Kártyafüggetlen 1Év Garanciával
- IPhone 15 128GB Zöld ÚJ! 12 Hó Jótállás!
- AKCIÓ! Apple iPad Pro 11 2024 1TB WiFi + Cellular tablet garanciával hibátlan működéssel
- Eladó ÚJ, BONTATLAN Samsung Galaxy A05s 4/64GB ezüst / 12 hónap jótállással!
- ÁRGARANCIA!Épített KomPhone i5 13400F 16/32/64GB RAM RTX 5060 Ti 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged