คำถามติดแท็ก spring

Spring เป็นเฟรมเวิร์กโอเพนซอร์สที่ใช้โมดูลเพื่อสร้างแอปพลิเคชัน Java / Java EE ที่มีประสิทธิภาพ

7
Spring Framework ทำอะไรได้บ้าง ฉันควรใช้หรือไม่ ทำไมหรือทำไมไม่?
ดังนั้นฉันเริ่มโครงการใหม่ใน Java และกำลังพิจารณาใช้ Spring ทำไมฉันถึงต้องพิจารณาสปริง เพราะมีคนมากมายบอกฉันว่าฉันควรใช้ Spring! อย่างจริงจังทุกครั้งที่ฉันพยายามให้ผู้คนอธิบายว่าสปริงคืออะไรหรือทำอะไรพวกเขาไม่สามารถให้คำตอบแบบตรงกับฉันได้ ฉันได้ตรวจสอบอินโทรในเว็บไซต์ SpringSource และพวกมันซับซ้อนหรือเน้นการสอนจริง ๆ และพวกมันก็ไม่มีความคิดที่ดีว่าทำไมฉันถึงควรใช้มันหรือจะทำให้ชีวิตของฉันง่ายขึ้นได้อย่างไร บางครั้งผู้คนขว้างคำว่า "การพึ่งพา" ซึ่งทำให้ฉันสับสนมากยิ่งขึ้นเพราะฉันคิดว่าฉันมีความเข้าใจที่แตกต่างกันเกี่ยวกับความหมายของคำนั้น อย่างไรก็ตามนี่เป็นเพียงเล็กน้อยเกี่ยวกับพื้นหลังและแอพของฉัน: รับการพัฒนาใน Java ในขณะที่ทำการพัฒนาเว็บ back-end ใช่ฉันทำการทดสอบหน่วยเป็นตัน เพื่ออำนวยความสะดวกในเรื่องนี้ฉันมักจะสร้างวิธีการอย่างน้อยสองรุ่น: รุ่นที่ใช้ตัวแปรอินสแตนซ์และรุ่นที่ใช้ตัวแปรที่ส่งผ่านไปยังเมธอดเท่านั้น หนึ่งที่ใช้ตัวแปรอินสแตนซ์เรียกอีกคนหนึ่งที่จัดหาตัวแปรอินสแตนซ์ เมื่อถึงเวลาที่ต้องทดสอบหน่วยฉันใช้ Mockito เพื่อจำลองวัตถุแล้วโทรไปยังวิธีการที่ไม่ใช้ตัวแปรอินสแตนซ์ นี่คือสิ่งที่ฉันเข้าใจเสมอว่า "การฉีดพึ่งพา" แอพของฉันค่อนข้างเรียบง่ายจากมุมมอง CS โครงการขนาดเล็ก 1-2 นักพัฒนาที่จะเริ่มต้นด้วย การดำเนินการประเภท CRUD ส่วนใหญ่ที่มีการค้นหามากมายถูกโยนเข้ามาโดยทั่วไปแล้วเว็บเซอร์วิส RESTful รวมทั้งเว็บฟรอนต์เอนด์และในที่สุดก็มีลูกค้ามือถือบางส่วน ฉันกำลังคิดที่จะทำ front-end ด้วย HTML / CSS / JS / JQuery …

4
มีกรณีพิเศษที่เราสามารถรับรหัสซ้ำได้หรือไม่
ฉันกำลังทำงานในโครงการซอฟต์แวร์ที่เราต้องสร้าง API สามตัว หนึ่งสำหรับบ้านธนาคารช่องทางหนึ่งสำหรับหน่วยงานและช่องทางที่สามสำหรับโทรศัพท์มือถือช่อง API ของเอเจนซีนั้นสมบูรณ์ที่สุดเนื่องจากมีฟังก์ชั่นทั้งหมด .. จากนั้นเป็น Home API ที่เล็กกว่าและ API มือถือ สถาปนิกที่นี่สร้างเลเยอร์ทั่วไป (บริการ EJB ข้ามแชนเนลที่แชร์โดย API ทั้งหมด) แต่ API นั้นแตกต่างกัน ตอนนี้ไม่มีความแตกต่างใหญ่ระหว่าง API ทีมใหญ่เริ่มต้นด้วยแชแนลเอเจนซี่และเรากำลังปรับให้เข้ากับช่องทางบ้าน เราเป็นเพียงการเพิ่มคุณค่าของวัตถุให้กับแอพหลักของเรา มิฉะนั้นรหัสจะคล้ายกัน 95% ระหว่าง API API นั้นสร้างมาจากSpring MVCและมี (ตัวควบคุมรุ่นและยูทิลิตี้บางอย่าง) โดยพื้นฐานแล้วคอนโทรลเลอร์กำลังทำการแมป BO กับ ChannelObject (ดูเหมือนว่าฉันไม่ใช่สถานที่ที่เหมาะสมในการทำเช่นนั้น) และยูทิลิตี้และซีเรียลไลเซอร์บางส่วน ทั้งหมดซ้ำกันในตอนนี้ พวกเขาบอกว่าสาเหตุของการทำซ้ำคือพวกเขาต้องการให้ API แยกต่างหาก "ถ้าพรุ่งนี้เราต้องการพฤติกรรมที่แตกต่างสำหรับบ้านมากกว่าเอเจนซี่หรือมือถือเราจะไม่ดิ้นรน !!" มีกรณีที่เราควรยอมรับรหัสซ้ำหรือไม่
57 java  api  spring 

4
ทำไมเราต้องมีกรอบสำหรับการฉีดพึ่งพา? [ปิด]
ฉันได้อ่านเพิ่มเติมเกี่ยวกับหลักการผกผันของการควบคุมและการพึ่งพาการฉีดเพื่อนำไปใช้และฉันค่อนข้างมั่นใจว่าฉันเข้าใจมัน ดูเหมือนว่าโดยทั่วไปแล้วจะพูดว่า 'อย่าประกาศให้อินสแตนซ์ของสมาชิกชั้นเรียนของคุณ' ในชั้นเรียน ' ค่อนข้างว่าอินสแตนซ์ควรจะถูกส่งผ่านและได้รับมอบหมายผ่านตัวสร้าง; 'ฉีด' เข้าสู่ชั้นเรียนจากแหล่งภายนอก ถ้ามันง่ายนี่มันน่าจะเป็นเหตุผลทำไมเราต้องใช้เฟรมเวิร์กเช่นสปริงหรือ guice ที่ใช้มันกับหมายเหตุประกอบ? ฉันขาดพื้นฐานบางอย่างที่นี่หรือไม่? ฉันกำลังดิ้นรนจริงๆที่จะเข้าใจว่าการใช้กรอบการฉีดพึ่งพาคืออะไร แก้ไข: เกี่ยวกับความซ้ำซ้อนที่เป็นไปได้ฉันเชื่อว่าคำถามของฉันไม่เหมือนใครเพราะถามเกี่ยวกับกรอบ DI โดยทั่วไปไม่ใช่เฉพาะฤดูใบไม้ผลิ Spring ไม่ได้เป็นเพียงกรอบ DI ดังนั้นจึงมีหลายเหตุผลที่บางคนต้องการใช้ Spring ที่ไม่เกี่ยวข้องกับ DI

6
คลาสใดควรได้รับการ autowired โดย Spring (เมื่อใช้การฉีดพึ่งพา)
ฉันได้ใช้การพึ่งพาการฉีดในฤดูใบไม้ผลิมาระยะหนึ่งแล้วและฉันเข้าใจว่ามันทำงานอย่างไรและข้อดีและข้อเสียของการใช้มันคืออะไร อย่างไรก็ตามเมื่อฉันสร้างคลาสใหม่ฉันมักจะสงสัย - คลาสนี้ควรจัดการโดย Spring IOC Container หรือไม่ และฉันไม่ต้องการพูดถึงความแตกต่างระหว่างคำอธิบายประกอบ @Autowired, การกำหนดค่า XML, การฉีด setter, การฉีดคอนสตรัคเตอร์ ฯลฯ คำถามของฉันคือคำถามทั่วไป สมมติว่าเรามีบริการที่มีตัวแปลง: @Service public class Service { @Autowired private Repository repository; @Autowired private Converter converter; public List<CarDto> getAllCars() { List<Car> cars = repository.findAll(); return converter.mapToDto(cars); } } @Component public class Converter { public CarDto …

3
ชั้นบริการควรตรวจจับข้อยกเว้น dao ทั้งหมดและตัดเป็นข้อยกเว้นบริการหรือไม่
ฉันมีเว็บแอพ Spring สามชั้น: dao, บริการและผู้ควบคุม คอนโทรลเลอร์ไม่เคยเรียก dao โดยตรงมันทำผ่านเลเยอร์บริการ ตอนนี้เวลาส่วนใหญ่หากมีข้อยกเว้น dao (รันไทม์) ที่ไม่ได้จัดการมันจะถูกจับโดย JSP แสดงข้อความข้อผิดพลาดให้กับผู้ใช้ ชั้นบริการควรตรวจจับข้อยกเว้น dao ทั้งหมดและตัดเป็นข้อยกเว้นบริการหรือไม่ try { daoInstance.someDaoMethod(); } catch(DataAccessException dae) { throw new ServiceException("message", dae); } สมมติว่า ServiceException นั้นเป็น runtime เช่นกัน มีความแตกต่างใด ๆ เพียงแค่โยน DataAccessException แทนที่จะเป็น ServiceException หรือไม่ ฉันแค่คิดว่าเลเยอร์การนำเสนอไม่ควรทราบเกี่ยวกับข้อยกเว้นการเข้าถึงข้อมูล แต่ฉันไม่เห็นจุดที่จับข้อยกเว้นที่ไม่สามารถกู้คืนได้เพื่อห่อไว้

2
จะวางไฟล์กำหนดค่าสปริงได้ที่ไหน
ฉันต้องการรวม Spring Framework ในโครงการของฉันเข้ากับฝั่งเซิร์ฟเวอร์โดยเฉพาะ ดังนั้นฉันไม่ต้องการวางไว้ในโฟลเดอร์ WEB-INF ของไฟล์ war ฉันควรใส่ applicationContext.xml ไว้ในแต่ละเลเยอร์ (หมายถึงแต่ละโครงการตั้งแต่แบ่งเป็นโครงการที่แตกต่างกันหรือไม่ (Services, Domain และ DAO) การปฏิบัติที่ดีคืออะไร?
18 java  soa  spring 

5
ควรตรวจสอบความถูกต้องของเลเยอร์ใด
ฉันกำลังสร้าง Rest API โดยใช้ Spring Boot และฉันกำลังใช้การตรวจสอบความถูกต้องของไฮเบอร์เนตเพื่อตรวจสอบอินพุตคำขอ แต่ฉันยังต้องการการตรวจสอบความถูกต้องประเภทอื่นเช่นเมื่ออัปเดตข้อมูลจำเป็นต้องตรวจสอบหากไม่มีรหัส บริษัท ฉันต้องการส่งข้อยกเว้นที่กำหนดเอง การตรวจสอบความถูกต้องนี้ควรอยู่ที่ชั้นบริการหรือชั้นควบคุมหรือไม่ ชั้นบริการ: public Company update(Company entity) { if (entity.getId() == null || repository.findOne(entity.getId()) == null) { throw new ResourceNotFoundException("can not update un existence data with id : " + entity.getId()); } return repository.saveAndFlush(entity); } เลเยอร์ควบคุม: public HttpEntity<CompanyResource> update(@Valid @RequestBody Company …

1
การใช้ DTO คืออะไรแทนที่จะใช้ Entity
ฉันกำลังทำงานกับแอปพลิเคชัน RCP ฉันยังใหม่กับแอปพลิเคชันนี้ Spring beans ใช้เพื่อเขียนตรรกะทางธุรกิจเพื่อบันทึก / ดึงเอนทิตี แต่แทนที่จะส่งเอนทิตีโดยตรงไปยังไคลเอนต์เรากำลังแปลงเป็น DTOsและเติมลูกค้า ในขณะที่ประหยัดเรากำลังแปลง DTO เป็นเอนทิตีและประหยัดอีกครั้ง ประโยชน์ของการแปลงเหล่านี้คืออะไร มีคนอธิบายได้ไหม
18 java  spring  entity  map  dto 

5
ฉันจำเป็นต้องรู้จัก servlets และ JSP เพื่อเรียนรู้ spring หรือ hibernate หรือ Java web framework อื่น ๆ หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันถามคนมากมายว่าจะเริ่มเรียนรู้การพัฒนาเว็บ Java ได้อย่างไรฉันรู้จักคอร์ java (Threading, Generics, Collections, ประสบการณ์เล็กน้อยกับ (JDBC)) แต่ฉันไม่รู้จัก JSP และ servlets ฉันมีส่วนแบ่งการพัฒนาพอใช้กับแอพพลิเคชั่นบนเว็บหลายตัวที่ใช้ PHP สำหรับฝั่งเซิร์ฟเวอร์และ HTML, CSS, Javascript, HTML5 สำหรับฝั่งไคลเอ็นต์ คนส่วนใหญ่ที่ฉันถามบอกให้ฉันกระโดดไปข้างหน้าเพื่อไฮเบอร์เนตในขณะที่บางคนบอกฉันว่าฉันไม่จำเป็นต้องเรียนรู้ servlets และ jsps และฉันควรศึกษากรอบการทำงานของฤดูใบไม้ผลิทันที มันเป็นเรื่องจริงเหรอ? ฉันไม่จำเป็นต้องเรียนรู้เซิร์ฟเล็ตและ JSP เพื่อเรียนรู้การจำศีลหรือฤดูใบไม้ผลิ คำตอบทั้งหมดของพวกเขาทำให้ฉันสับสนและตอนนี้ฉันสูญเสียสิ่งที่เรียนรู้หรือศึกษาไปอย่างสิ้นเชิง ฉันรู้สึกว่าถ้าฉันข้ามการเรียนรู้ JSP และ servlets ฉันจะพลาดแนวคิดที่สำคัญมากมายที่จะช่วยฉันในอนาคต ดังนั้นคำถามฉันต้องมีพื้นฐาน / รู้ …

3
API Gateway (REST) ​​+ Microservices ที่ขับเคลื่อนด้วยเหตุการณ์
ฉันมี microservices มากมายที่มีฟังก์ชั่นที่ฉันเปิดเผยผ่าน REST API ตามรูปแบบเกตเวย์ API เนื่องจาก microservices เหล่านี้เป็นแอปพลิเคชั่น Spring Boot ฉันจึงใช้ Spring AMQP เพื่อให้เกิดการสื่อสารแบบซิงโครนัสสไตล์ RPC ระหว่างไมโครไซต์เหล่านี้ สิ่งต่าง ๆ ราบรื่นไปแล้ว อย่างไรก็ตามยิ่งฉันอ่านเกี่ยวกับสถาปัตยกรรม microservice ที่ขับเคลื่อนด้วยเหตุการณ์มากขึ้นและดูโครงการเช่น Spring Cloud Stream ยิ่งฉันเชื่อมั่นมากขึ้นว่าฉันอาจทำสิ่งที่ผิดกับ RPC วิธีการแบบซิงโครนัส เพื่อตอบสนองการร้องขอนับร้อยหรือพันต่อวินาทีจากแอปพลิเคชันไคลเอนต์) ฉันเข้าใจจุดหลังสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ สิ่งที่ฉันไม่ค่อยเข้าใจคือวิธีการใช้รูปแบบดังกล่าวจริงเมื่อนั่งอยู่ข้างหลังแบบจำลอง (REST) ​​ที่คาดว่าจะตอบสนองต่อทุกคำขอ ตัวอย่างเช่นถ้าฉันมีเกตเวย์ API เป็น microservice และอีกบริการหนึ่งที่เก็บและจัดการผู้ใช้ฉันจะสร้างแบบจำลองเช่นGET /users/1ในเหตุการณ์ที่ขับเคลื่อนด้วยเหตุการณ์ได้อย่างหมดจดได้อย่างไร

1
โครงสร้างแอ็พพลิเคชัน Java: แนวนอน vs แนวแยก
มีการถกเถียงกันเล็กน้อยเกี่ยวกับโครงสร้างโครงการเริ่มต้น (โดยใช้ Maven / Eclipse) สำหรับแอปพลิเคชัน Java ขนาดใหญ่ ตัวเลือกที่ 1: entities (i.e. the whole database using Hibernate classes-first) services (i.e. sets of read/write operations on the entities) app (perhaps split up more further down the line) ตัวเลือก 2: area1-entities area1-services area1-app area2-entities area2-services area2-app ... (where area1, area2 etc. are …

4
เมื่อไม่ใช้ Spring เพื่อยกตัวอย่างถั่ว
ฉันพยายามเข้าใจว่าการใช้สปริงอย่างถูกต้องจะเป็นอย่างไร ไม่เกี่ยวกับวากยสัมพันธ์ แต่ในแง่ของวัตถุประสงค์ หากมีใครใช้ Spring รหัส Spring ควรแทนที่รหัสการเริ่มต้นถั่วทั้งหมดหรือไม่ เมื่อไรที่จะใช้หรือเมื่อไม่ใช้ Spring เพื่อยกตัวอย่างถั่ว อาจเป็นตัวอย่างรหัสต่อไปนี้จะช่วยให้คุณเข้าใจภาวะที่กลืนไม่เข้าคายไม่ออกของฉัน: List<ClassA> caList = new ArrayList<ClassA>(); for (String name : nameList) { ClassA ca = new ClassA(); ca.setName(name); caList.add(ca); } หากฉันกำหนดค่าสปริงมันจะกลายเป็นสิ่งที่ชอบ: List<ClassA> caList = new ArrayList<ClassA>(); for (String name : nameList) { ClassA ca = (ClassA)SomeContext.getBean(BeanLookupConstants.CLASS_A); ca.setName(name); caList.add(ca); } …
14 java  spring 

3
โทเค็นการเข้าถึง Oauth2 หลายรายการ
ฉันมี API ที่ใช้ oAuth2 และแอพมือถือของฉันเองที่ใช้ API นี้เป็นแบ็กเอนด์ เนื่องจากผู้ใช้สามารถเข้าสู่ระบบผ่านอุปกรณ์หลายตัว (เช่น iPhone, iPad, แท็บเล็ต Android หรือโทรศัพท์ Android) ในเวลาเดียวกันฉันจึงต้องใช้ API เพื่อแยกแยะระหว่างการเชื่อมต่อแต่ละครั้ง ฉันต้องการทำสิ่งนี้ผ่านโทเค็นการเข้าถึงแยกกัน: ลูกค้าแต่ละคนจะได้รับโทเค็นการเข้าถึงแยกต่างหาก ปัญหาคือการใช้งานปัจจุบันที่เราใช้ (spring-security-oauth2) สร้างคีย์ที่ไม่ซ้ำกันตาม client_id ชื่อผู้ใช้และขอบเขต ดังนั้นโดยทั่วไปเมื่อได้รับโทเค็นการเข้าถึงลูกค้าทั้งหมดจะได้รับโทเค็นการเข้าถึงเดียวกันสำหรับผู้ใช้เดียวกัน สิ่งนี้ทำได้โดยใช้ DefaultAuthenticationKeyGenerator ปลอดภัยหรือไม่หากไม่สนใจตัวสร้างคีย์การรับรองความถูกต้องและเพียงสร้างโทเค็นการเข้าถึงใหม่ในแต่ละคำขอจากลูกค้า
13 spring  oauth2 

2
รูปแบบโดเมนที่ใช้ร่วมกันของสถาปัตยกรรม Microservice
สมมติว่าเรามีแอพพลิเคชั่น Spring Boot ที่ใช้สถาปัตยกรรมไมโครไซต์ แต่ละบริการมีรูปแบบโดเมนของตนเอง แต่แต่ละบริการต้องอ้างอิงวัตถุโดเมนผู้ใช้ อะไรจะเป็นวิธีที่ดีที่สุดในการแก้ไขปัญหานี้? แต่ละบริการจะมี userId ที่ดีกว่าหรือไม่จากนั้นเมื่อจำเป็นให้สอบถามผู้ใช้บริการเพื่อขอรายละเอียดของผู้ใช้หรือดีกว่าถ้ามีห้องสมุดโดเมนที่ใช้ร่วมกันสำหรับไมโครไซต์ทั้งหมด

3
วิธีการจัดการ 2 DAO วิธีในการทำธุรกรรมเดียว?
ในการสัมภาษณ์มีคนถามฉัน: เราจะจัดการวิธีการทำธุรกรรม / dao 2 วิธีในการทำธุรกรรมเดียวได้อย่างไร ความสามารถที่ต้องการ: หากทุกคนล้มเหลวเราจำเป็นต้องย้อนกลับทั้งสองวิธี ทั้งสองวิธีสามารถเรียกแยกแนบกับธุรกรรมเดียว การจัดการควรอยู่ในชั้น DAO ไม่ใช่ในชั้นบริการ ฉันคิดว่า: คำถามเกี่ยวข้องกับการจัดการธุรกรรมในฤดูใบไม้ผลิ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.