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

Spring Framework เป็นเฟรมเวิร์กโอเพนซอร์ซสำหรับการพัฒนาแอพพลิเคชั่นบนแพลตฟอร์ม Java ที่แกนกลางของมันคือการสนับสนุนที่หลากหลายสำหรับสถาปัตยกรรมที่ใช้ส่วนประกอบและในปัจจุบันมีโมดูลรวมมากกว่ายี่สิบโมดูล

12
Spring RestTemplate GET พร้อมพารามิเตอร์
ฉันต้องRESTโทรหาที่มีส่วนหัวที่กำหนดเองและพารามิเตอร์การสืบค้น ฉันตั้งค่าของฉันHttpEntityด้วยส่วนหัว (ไม่มีร่างกาย) และฉันใช้RestTemplate.exchange()วิธีการดังต่อไปนี้: HttpHeaders headers = new HttpHeaders(); headers.set("Accept", "application/json"); Map<String, String> params = new HashMap<String, String>(); params.put("msisdn", msisdn); params.put("email", email); params.put("clientVersion", clientVersion); params.put("clientType", clientType); params.put("issuerName", issuerName); params.put("applicationName", applicationName); HttpEntity entity = new HttpEntity(headers); HttpEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class, params); สิ่งนี้ล้มเหลวในตอนท้ายของไคลเอนต์โดยdispatcher servletไม่สามารถแก้ไขการร้องขอไปยังตัวจัดการได้ เมื่อทำการดีบั๊กแล้วดูเหมือนว่าจะไม่ส่งพารามิเตอร์คำขอ เมื่อฉันแลกเปลี่ยนกับการPOSTใช้เนื้อหาคำขอและไม่มีพารามิเตอร์การสืบค้นก็ใช้งานได้ดี ไม่มีใครมีความคิดใด ๆ
267 java  spring  rest 

10
ความปลอดภัยของประเภท: นักแสดงที่ไม่ได้ตรวจสอบ
ในไฟล์บริบทของฤดูใบไม้ผลิแอปพลิเคชันของฉันฉันมีลักษณะดังนี้: <util:map id="someMap" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.String"> <entry key="some_key" value="some value" /> <entry key="some_key_2" value="some value" /> </util:map> ในคลาส java การใช้งานมีลักษณะดังนี้: private Map<String, String> someMap = new HashMap<String, String>(); someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap"); ใน Eclipse ฉันเห็นคำเตือนที่แจ้งว่า: ความปลอดภัยของประเภท: นักแสดงที่ไม่ได้ตรวจสอบจาก Object ไปยัง HashMap ฉันทำอะไรผิด? ฉันจะแก้ไขปัญหาได้อย่างไร

4
การรับรองความถูกต้อง RESTful ผ่าน Spring
ปัญหา: เรามี RESTful API แบบสปริง MVC ซึ่งมีข้อมูลที่ละเอียดอ่อน API ควรมีความปลอดภัย แต่การส่งข้อมูลรับรองของผู้ใช้ (คำสั่งผสมของผู้ใช้ / รหัสผ่าน) พร้อมกับคำขอแต่ละรายการไม่เป็นที่ต้องการ ตามแนวทาง REST (และข้อกำหนดทางธุรกิจภายใน) เซิร์ฟเวอร์จะต้องอยู่ในสถานะไร้สัญชาติ API จะใช้งานโดยเซิร์ฟเวอร์อื่นในรูปแบบการตอบโต้กับผู้ใช้ได้ ที่ต้องการ: ไคลเอนต์ทำการร้องขอ.../authenticate(URL ที่ไม่มีการป้องกัน) ด้วยหนังสือรับรอง เซิร์ฟเวอร์ส่งคืนโทเค็นที่ปลอดภัยซึ่งมีข้อมูลเพียงพอสำหรับเซิร์ฟเวอร์เพื่อตรวจสอบคำขอในอนาคตและยังคงไร้สัญชาติ นี้อาจจะประกอบด้วยข้อมูลเช่นเดียวกับการรักษาความปลอดภัยของฤดูใบไม้ผลิจำ-Me Token ไคลเอนต์ทำการร้องขอที่ตามมาไปยัง URL ต่างๆ (ที่มีการป้องกัน) ซึ่งจะเพิ่มโทเค็นที่ได้รับก่อนหน้านี้เป็นพารามิเตอร์การสืบค้น (หรือน้อยกว่านั้นคือส่วนหัวคำขอ HTTP) ไม่สามารถคาดว่าลูกค้าจะจัดเก็บคุกกี้ได้ เนื่องจากเราใช้ Spring อยู่แล้วโซลูชันควรใช้ประโยชน์จาก Spring Security เราต่อสู้กับกำแพงที่พยายามทำให้งานนี้สำเร็จดังนั้นหวังว่าจะมีใครบางคนแก้ไขปัญหานี้ได้แล้ว จากสถานการณ์ข้างต้นคุณจะแก้ไขความต้องการนี้ได้อย่างไร

8
ความแตกต่างระหว่างการใส่คุณสมบัติใน application.yml หรือ bootstrap.yml ใน spring boot คืออะไร?
ความแตกต่างระหว่างการใส่คุณสมบัติใน application.yml หรือ bootstrap.yml ใน spring boot คืออะไร? ในกรณี log.config แอปพลิเคชันจะทำงานแตกต่างกัน

7
วิธีการใช้คำอธิบายประกอบ @RequestMapping หลายรายการในฤดูใบไม้ผลิ
เป็นไปได้ไหมที่จะใช้@RequestMappingคำอธิบายประกอบหลายรายการบนวิธีการ ชอบ : @RequestMapping("/") @RequestMapping("") @RequestMapping("/welcome") public String welcomeHandler(){ return "welcome"; }
247 java  spring  spring-mvc 

16
การอ่านรายการจากไฟล์คุณสมบัติและโหลดด้วยคำอธิบายประกอบแบบสปริง @Value
ฉันต้องการมีรายการค่าในไฟล์. properties เช่น: my.list.of.strings=ABC,CDE,EFG และโหลดในชั้นเรียนของฉันโดยตรงเช่น: @Value("${my.list.of.strings}") private List<String> myList; ตามที่ฉันเข้าใจทางเลือกอื่นของการทำเช่นนี้คือมีไว้ในไฟล์สปริงสปริงและโหลดเป็นการอ้างอิงถั่ว (แก้ไขฉันถ้าฉันผิด) เช่น <bean name="list"> <list> <value>ABC</value> <value>CDE</value> <value>EFG</value> </list> </bean> แต่มีวิธีการทำเช่นนี้หรือไม่? ใช้ไฟล์. properties หรือไม่ ps: ฉันต้องการทำสิ่งนี้โดยไม่ใช้รหัสที่กำหนดเองถ้าเป็นไปได้

11
วิธีการตรวจสอบ String ในการตอบสนองเนื้อหาด้วย mockMvc
ฉันมีการทดสอบการรวมอย่างง่าย @Test public void shouldReturnErrorMessageToAdminWhenCreatingUserWithUsedUserName() throws Exception { mockMvc.perform(post("/api/users").header("Authorization", base64ForTestUser).contentType(MediaType.APPLICATION_JSON) .content("{\"userName\":\"testUserDetails\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"password\":\"xxx\"}")) .andDo(print()) .andExpect(status().isBadRequest()) .andExpect(?); } ในบรรทัดสุดท้ายฉันต้องการเปรียบเทียบสตริงที่ได้รับในเนื้อความการตอบสนองกับสตริงที่คาดหวัง และในการตอบสนองฉันได้รับ: MockHttpServletResponse: Status = 400 Error message = null Headers = {Content-Type=[application/json]} Content type = application/json Body = "Username already taken" Forwarded URL = null Redirected URL = null ลองใช้เทคนิคบางอย่างกับเนื้อหา (), เนื้อหา () แต่ไม่มีอะไรทำงาน

6
การเติม Spring @Value ระหว่างการทดสอบหน่วย
ฉันกำลังพยายามเขียนการทดสอบหน่วยสำหรับถั่วง่ายๆที่ใช้ในโปรแกรมของฉันเพื่อตรวจสอบแบบฟอร์ม bean มีคำอธิบายประกอบด้วย@Componentและมีตัวแปรคลาสที่ถูกเตรียมข้อมูลเบื้องต้นโดยใช้ @Value("${this.property.value}") private String thisProperty; ฉันต้องการเขียนการทดสอบหน่วยสำหรับวิธีการตรวจสอบภายในคลาสนี้อย่างไรก็ตามถ้าเป็นไปได้ฉันต้องการจะทำโดยไม่ต้องใช้ไฟล์คุณสมบัติ เหตุผลของฉันที่อยู่เบื้องหลังคือถ้าค่าที่ฉันดึงจากการเปลี่ยนแปลงไฟล์คุณสมบัติฉันต้องการที่จะไม่ส่งผลกระทบต่อกรณีทดสอบของฉัน กรณีทดสอบของฉันกำลังทดสอบรหัสที่ตรวจสอบความถูกต้องของค่าไม่ใช่ตัวของตัวเอง มีวิธีใช้รหัส Java ในคลาสทดสอบของฉันเพื่อเริ่มต้นคลาส Java และเติมคุณสมบัติ Spring @Value ภายในคลาสนั้นแล้วใช้เพื่อทดสอบด้วยหรือไม่ ฉันพบวิธีการที่ดูเหมือนว่าจะปิด แต่ยังคงใช้ไฟล์คุณสมบัติ ฉันต้องการทั้งหมดเป็นรหัส Java

6
วิธีการเรียกวิธีหลังจากการเริ่มต้นถั่วเสร็จสมบูรณ์แล้ว?
ฉันมีกรณีการใช้งานที่ฉันต้องการเรียกใช้เมธอด (แบบไม่คงที่) ใน bean เพียงครั้งเดียวที่ ApplicationContext โหลดขึ้น ไม่เป็นไรถ้าฉันใช้ MethodInvokingFactoryBean สำหรับสิ่งนี้ หรือเรามีทางออกที่ดีกว่า ในฐานะที่เป็นข้อความด้านข้างฉันใช้ ConfigContextLoaderListener เพื่อโหลด Application Context ในเว็บแอปพลิเคชัน และต้องการว่าถ้า bean 'A' ถูกสร้างอินสแตนซ์เพียงแค่เรียกเมธอด A () หนึ่งครั้ง วิธีนี้สามารถทำได้อย่างดี?

20
BeanFactory vs ApplicationContext
ฉันค่อนข้างใหม่กับ Spring Framework ฉันได้ลองเล่นกับมันแล้ววางตัวอย่างแอพไว้ด้วยกันเพื่อประเมิน Spring MVC สำหรับใช้ในโครงการ บริษัท ที่กำลังจะมาถึง จนถึงตอนนี้ฉันชอบสิ่งที่ฉันเห็นใน Spring MVC ดูเหมือนจะใช้งานง่ายมากและกระตุ้นให้คุณเขียนคลาสที่เป็นมิตรกับการทดสอบหน่วย เช่นเดียวกับการออกกำลังกายฉันกำลังเขียนวิธีหลักสำหรับหนึ่งในตัวอย่าง / โครงการทดสอบของฉัน สิ่งหนึ่งที่ฉันไม่ชัดเจนเกี่ยวกับความแตกต่างที่แน่นอนระหว่างBeanFactoryและApplicationContext- ซึ่งเหมาะสมที่จะใช้ในเงื่อนไขใด ฉันเข้าใจว่ามันApplicationContextขยายออกไปBeanFactoryแต่ถ้าฉันเพิ่งเขียนวิธีหลักอย่างง่ายฉันต้องใช้ฟังก์ชันพิเศษที่ApplicationContextให้มาหรือไม่ และมีฟังก์ชั่นพิเศษApplicationContextอะไรบ้างที่มีให้? นอกเหนือจากการตอบ "ซึ่งฉันควรใช้ในวิธีการหลัก ()" มีมาตรฐานหรือแนวทางปฏิบัติเท่าที่ควรใช้ในสถานการณ์เช่นนี้หรือไม่? ควรเขียนเมธอด main () ของฉันให้ขึ้นอยู่กับการกำหนดค่า bean / แอปพลิเคชันให้อยู่ในรูปแบบ XML หรือไม่นั่นคือสมมติฐานที่ปลอดภัยหรือฉันล็อกผู้ใช้ไว้ในบางสิ่ง และคำตอบนี้เปลี่ยนไปในสภาพแวดล้อมของเว็บหรือไม่ถ้าหากคลาสใดของฉันจำเป็นต้องตระหนักถึงสปริงพวกเขามีแนวโน้มที่จะต้องการApplicationContextหรือไม่ ขอบคุณสำหรับความช่วยเหลือ ฉันรู้ว่าคำถามเหล่านี้อาจตอบได้ในคู่มืออ้างอิง แต่ฉันมีปัญหาในการหารายละเอียดที่ชัดเจนของอินเทอร์เฟซทั้งสองนี้และข้อดี / ข้อเสียของแต่ละข้อโดยไม่ต้องอ่านผ่านคู่มือด้วยหวีฟัน

12
ความแตกต่างระหว่าง Spring MVC และ Spring Boot
ฉันเพิ่งเริ่มเรียนรู้ฤดูใบไม้ผลิ ในขั้นตอนต่อไปของฉันฉันต้องการพัฒนาเว็บแอปพลิเคชันให้ใหญ่ขึ้น ตอนนี้ฉันสงสัยว่าฉันควรเริ่มต้นด้วย Spring Boot หรือ Spring MVC ฉันได้อ่านบางสิ่งแล้ว แต่มันก็สับสนเพราะทั้งคู่ดูเหมือนกัน ดังนั้นความแตกต่างระหว่างสองคืออะไร

4
ความแตกต่างระหว่างบทบาทและสิ่งที่ได้รับสิทธิ์ในการรักษาความปลอดภัยของสปริง
มีแนวคิดและการใช้งานใน Spring Security เช่นGrantedAuthorityอินเทอร์เฟซเพื่อรับสิทธิ์ในการอนุญาต / ควบคุมการเข้าถึง ฉันต้องการให้การดำเนินการที่อนุญาตเช่นcreateSubUsersหรือdeleteAccountsซึ่งฉันอนุญาตให้ผู้ดูแลระบบ (มีบทบาทROLE_ADMIN) ฉันสับสนเนื่องจากบทเรียน / การสาธิตที่ฉันเห็นทางออนไลน์ ฉันพยายามเชื่อมต่อสิ่งที่ฉันอ่าน แต่ฉันคิดว่าเราปฏิบัติต่อทั้งสองอย่างสลับกันได้ ฉันเห็นการhasRoleบริโภคGrantedAuthorityสตริงหรือไม่ ฉันเข้าใจผิดแน่นอนในการทำความเข้าใจ แนวคิดเหล่านี้ใน Spring Security มีอะไรบ้าง ฉันจะจัดเก็บบทบาทของผู้ใช้แยกจากหน่วยงานผู้มีอำนาจสำหรับบทบาทนั้นได้อย่างไร ฉันยังดูที่org.springframework.security.core.userdetails.UserDetailsอินเทอร์เฟซที่ใช้ในการรับรองความถูกต้อง - ผู้ให้บริการอ้างอิง DAO ซึ่งใช้User(หมายเหตุล่าสุด GrantedAuthority): public User(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) หรือมีวิธีอื่นในการแยกความแตกต่างระหว่างสองอีกหรือไม่ หรือมันไม่ได้รับการสนับสนุนและเราต้องทำด้วยตัวเอง?

9
Spring @Autowired การใช้งาน
ข้อดีและข้อเสียของการใช้@Autowiredในชั้นเรียนที่จะเชื่อมต่อกับ Spring คืออะไร เพื่อชี้แจงฉันกำลังพูดถึงเฉพาะเกี่ยวกับคำอธิบายประกอบ@Autowiredไม่ใช่สายอัตโนมัติใน XML ฉันอาจจะไม่เข้าใจ แต่สำหรับฉันมันเกือบจะดูเหมือนการต่อต้านรูปแบบ - ชั้นเรียนของคุณเริ่มตระหนักว่าพวกเขาเชื่อมโยงกับกรอบ DI แทนที่จะเป็นแค่ POJOs อาจจะเป็นคนตะกละสำหรับการลงโทษ แต่ฉันชอบที่จะมีการกำหนดค่า XML ภายนอกสำหรับถั่วและฉันชอบที่จะมีสายที่ชัดเจนดังนั้นฉันรู้ว่าสิ่งที่มีสาย
218 java  spring  autowired 

15
รับบริบทของแอปพลิเคชัน Spring
มีวิธีการแบบคงที่ / ทั่วโลกร้องขอสำเนาของ ApplicationContext ในแอปพลิเคชันสปริงหรือไม่? สมมติว่าคลาสหลักเริ่มต้นขึ้นและเริ่มต้นบริบทแอปพลิเคชันจำเป็นต้องส่งผ่าน down call ไปยังคลาสใด ๆ ที่ต้องการหรือมีวิธีที่คลาสจะถามบริบทที่สร้างขึ้นก่อนหน้านี้หรือไม่? (ซึ่งฉันคิดว่าจะต้องเป็นซิงเกิล)

21
Spring Boot - วิธีบันทึกคำขอและคำตอบทั้งหมดโดยมีข้อยกเว้นในที่เดียว?
ฉันกำลังทำงานกับส่วนที่เหลือ API กับฤดูใบไม้ผลิบูต ฉันต้องการบันทึกคำขอทั้งหมดด้วย params การป้อนข้อมูล (ด้วยวิธีการเช่น GET, POST, ฯลฯ ), เส้นทางคำขอ, สตริงการสืบค้น, วิธีการเรียนที่สอดคล้องกันของคำขอนี้รวมทั้งการตอบสนองของการกระทำนี้ทั้งความสำเร็จและข้อผิดพลาด ตัวอย่างเช่น คำขอสำเร็จ: http://example.com/api/users/1 บันทึกควรมีลักษณะดังนี้: { HttpStatus: 200, path: "api/users/1", method: "GET", clientIp: "0.0.0.0", accessToken: "XHGu6as5dajshdgau6i6asdjhgjhg", method: "UsersController.getUser", arguments: { id: 1 }, response: { user: { id: 1, username: "user123", email: "user123@example.com" } }, exceptions: [] …

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