国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Spring】SpringBoot的10個(gè)參數(shù)驗(yàn)證技巧

這篇具有很好參考價(jià)值的文章主要介紹了【Spring】SpringBoot的10個(gè)參數(shù)驗(yàn)證技巧。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【Spring】SpringBoot的10個(gè)參數(shù)驗(yàn)證技巧,external,java,spring,spring boot,后端

前言

參數(shù)驗(yàn)證很重要,是平時(shí)開發(fā)環(huán)節(jié)中不可少的一部分,但是我想很多后端同事會(huì)偷懶,干脆不錯(cuò),這樣很可能給系統(tǒng)的穩(wěn)定性和安全性帶來嚴(yán)重的危害。那么在Spring Boot應(yīng)用中如何做好參數(shù)校驗(yàn)工作呢,本文提供了10個(gè)小技巧,你知道幾個(gè)呢?

1.使用驗(yàn)證注解

Spring Boot提供了內(nèi)置的驗(yàn)證注解,可以幫助簡單、快速地對(duì)輸入字段進(jìn)行驗(yàn)證,例如檢查 null 或空字段、強(qiáng)制執(zhí)行長度限制、使用正則表達(dá)式驗(yàn)證模式以及驗(yàn)證電子郵件地址。

一些最常用的驗(yàn)證注釋包括:

@NotNull:指定字段不能為空。

@NotEmpty:指定列表字段不能為空。

@NotBlank:指定字符串字段不得為空或僅包含空格。

@Min 和 @Max:指定數(shù)字字段的最小值和最大值。

@Pattern:指定字符串字段必須匹配的正則表達(dá)式模式。

@Email:指定字符串字段必須是有效的電子郵件地址。

    具體用法參考下面例子:

public class User {
@NotNull
private Long id;

@NotBlank
@Size(min = 2, max = 50)
private String firstName;

@NotBlank
@Size(min = 2, max = 50)
private String lastName;

@Email
private String email;

@NotNull
@Min(18)
@Max(99)
private Integer age;

@NotEmpty
private List<String> hobbies;

@Pattern(regexp = "[A-Z]{2}\d{4}")
private String employeeId;

2 使用自定義驗(yàn)證注解

雖然 Spring Boot 的內(nèi)置驗(yàn)證注釋很有用,但它們可能無法涵蓋所有情況。如果有特殊參數(shù)驗(yàn)證的場景,可以使用 Spring 的 JSR 303 驗(yàn)證框架創(chuàng)建自定義驗(yàn)證注釋。自定義注解可以讓你的的驗(yàn)證邏輯更具可重用性和可維護(hù)性。

假設(shè)我們有一個(gè)應(yīng)用程序,用戶可以在其中創(chuàng)建帖子。每個(gè)帖子都應(yīng)該有一個(gè)標(biāo)題和一個(gè)正文,并且標(biāo)題在所有帖子中應(yīng)該是唯一的。雖然 Spring Boot 提供了用于檢查字段是否為空的內(nèi)置驗(yàn)證注釋,但它沒有提供用于檢查唯一性的內(nèi)置驗(yàn)證注釋。在這種情況下,我們可以創(chuàng)建一個(gè)自定義驗(yàn)證注解來處理這種情況。

首先,我們創(chuàng)建自定義約束注解UniqueTitle :

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UniqueTitleValidator.class)
public @interface UniqueTitle {
String message() default “Title must be unique”;

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

}
接下來,我們創(chuàng)建一個(gè)PostRepository接口,目的是從數(shù)據(jù)庫中檢索帖子:

public interface PostRepository extends JpaRepository<Post, Long> {
Post findByTitle(String title);
}
然后我們需要定義驗(yàn)證器類 UniqueTitleValidator,如下所示:

@Component
public class UniqueTitleValidator implements ConstraintValidator<UniqueTitle, String> {

@Autowired
private PostRepository postRepository;

@Override
public boolean isValid(String title, ConstraintValidatorContext context) {
    if (title == null) {
        return true;
    }
    return Objects.isNull(postRepository.findByTitle(title));
}

}
UniqueTitleValidator實(shí)現(xiàn)了ConstraintValidator接口,它有兩個(gè)泛型類型:第一個(gè)是自定義注解UniqueTitle,第二個(gè)是正在驗(yàn)證的字段類型(在本例中為String). 我們還自動(dòng)裝配了PostRepository 類以從數(shù)據(jù)庫中檢索帖子。

isValid()方法通過查詢 PostRepository 來檢查 title 是否為 null 或者它是否是唯一的。如果 title 為 null 或唯一,則驗(yàn)證成功,并返回 true。

定義了自定義驗(yàn)證注釋和驗(yàn)證器類后,我們現(xiàn)在可以使用它來驗(yàn)證 Spring Boot 應(yīng)用程序中的帖子標(biāo)題:

public class Post {
@UniqueTitle
private String title;

@NotNull
private String body;

}
我們已將 @UniqueTitle 注釋應(yīng)用于 Post 類中的 title 變量。驗(yàn)證此字段時(shí),這將觸發(fā) UniqueTitleValidator 類中定義的驗(yàn)證邏輯。

3 在服務(wù)器端驗(yàn)證

除了前端或者客戶端做了驗(yàn)證意外,服務(wù)器端驗(yàn)證輸入是至關(guān)重要的。它可以確保在處理或存儲(chǔ)任何惡意或格式錯(cuò)誤的數(shù)據(jù)之前將其捕獲,這對(duì)于應(yīng)用程序的安全性和穩(wěn)定性至關(guān)重要。

假設(shè)我們有一個(gè)允許用戶創(chuàng)建新帳戶的 REST 端點(diǎn)。端點(diǎn)需要一個(gè)包含用戶用戶名和密碼的 JSON 請(qǐng)求體。為確保輸入有效,我們可以創(chuàng)建一個(gè) DTO(數(shù)據(jù)傳輸對(duì)象)類并將驗(yàn)證注釋應(yīng)用于其字段:

public class UserDTO {

@NotBlank
private String username;

@NotBlank
private String password;

}
我們使用@NotBlank注解來確保username和password字段不為空或 null。

接下來,我們可以創(chuàng)建一個(gè)控制器方法來處理 HTTP POST 請(qǐng)求并在創(chuàng)建新用戶之前驗(yàn)證輸入:

@RestController
@RequestMapping(“/users”)
@Validated
public class UserController {
@Autowired
private UserService userService;

@PostMapping
public ResponseEntity<String> createUser(@Valid @RequestBody UserDTO userDto) {
    userService.createUser(userDto);
    return ResponseEntity.status(HttpStatus.CREATED).body("User created successfully");
}

}
我們使用 Spring 的@Validated注解來啟用方法級(jí)驗(yàn)證,我們還將 @Valid 注釋應(yīng)用于 userDto 參數(shù)以觸發(fā)驗(yàn)證過程。

4 提供有意義的錯(cuò)誤信息

當(dāng)驗(yàn)證失敗時(shí),必須提供清晰簡潔的錯(cuò)誤消息來描述出了什么問題以及如何修復(fù)它。

這是一個(gè)示例,如果我們有一個(gè)允許用戶創(chuàng)建新用戶的 RESTful API。我們要確保姓名和電子郵件地址字段不為空,年齡在 18 到 99 歲之間,除了這些字段,如果用戶嘗試使用重復(fù)的“用戶名”創(chuàng)建帳戶,我們還會(huì)提供明確的錯(cuò)誤消息或“電子郵件”。

為此,我們可以定義一個(gè)帶有必要驗(yàn)證注釋的模型類 User,如下所示:

public class User {

@NotBlank(message = "用戶名不能為空")
private String name;

@NotBlank(message = "Email不能為空")
@Email(message = "無效的Emaild地址")
private String email;

@NotNull(message = "年齡不能為空")
@Min(value = 18, message = "年齡必須大于18")
@Max(value = 99, message = "年齡必須小于99")
private Integer age;

}
我們使用 message屬性為每個(gè)驗(yàn)證注釋提供了自定義錯(cuò)誤消息。

接下來,在我們的 Spring 控制器中,我們可以處理表單提交并使用 @Valid 注釋驗(yàn)證用戶輸入:

@RestController
@RequestMapping(“/users”)
public class UserController {
@Autowired
private UserService userService;

@PostMapping
public ResponseEntity<String> createUser(@Valid @RequestBody User user, BindingResult result) {
    if (result.hasErrors()) {
        List<String> errorMessages = result.getAllErrors().stream()
                .map(DefaultMessageSourceResolvable::getDefaultMessage)
                .collect(Collectors.toList());
        return ResponseEntity.badRequest().body(errorMessages.toString());
    }

    // save the user to the database using UserService
    userService.saveUser(user);

    return ResponseEntity.status(HttpStatus.CREATED).body("User created successfully");
}

}

我們使用 @Valid 注釋來觸發(fā) User 對(duì)象的驗(yàn)證,并使用 BindingResult 對(duì)象來捕獲任何驗(yàn)證錯(cuò)誤。

5 將 i18n 用于錯(cuò)誤消息

如果你的應(yīng)用程序支持多種語言,則必須使用國際化 (i18n) 以用戶首選語言顯示錯(cuò)誤消息。

以下是在 Spring Boot 應(yīng)用程序中使用 i18n 處理錯(cuò)誤消息的示例

首先,在資源目錄下創(chuàng)建一個(gè)包含默認(rèn)錯(cuò)誤消息的 messages.properties 文件

messages.properties

user.name.required=Name is required.
user.email.invalid=Invalid email format.
user.age.invalid=Age must be a number between 18 and 99.
接下來,為每種支持的語言創(chuàng)建一個(gè) messages_xx.properties 文件,例如,中文的 messages_zh_CN.properties。

user.name.required=名稱不能為空.
user.email.invalid=無效的email格式.
user.age.invalid=年齡必須在18到99歲之間.
然后,更新您的驗(yàn)證注釋以使用本地化的錯(cuò)誤消息

public class User {
@NotNull(message = “{user.id.required}”)
private Long id;

@NotBlank(message = "{user.name.required}")
private String name;

@Email(message = "{user.email.invalid}")
private String email;

@NotNull(message = "{user.age.required}")
@Min(value = 18, message = "{user.age.invalid}")
@Max(value = 99, message = "{user.age.invalid}")
private Integer age;

}

最后,在 Spring 配置文件中配置 MessageSource bean 以加載 i18n 消息文件

@Configuration
public class AppConfig {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename(“messages”);
messageSource.setDefaultEncoding(“UTF-8”);
return messageSource;
}

@Bean
public LocalValidatorFactoryBean validator() {
    LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
    validatorFactoryBean.setValidationMessageSource(messageSource());
    return validatorFactoryBean;
}

}

現(xiàn)在,當(dāng)發(fā)生驗(yàn)證錯(cuò)誤時(shí),錯(cuò)誤消息將根據(jù)隨請(qǐng)求發(fā)送的“Accept-Language”標(biāo)頭以用戶的首選語言顯示。

6 使用分組驗(yàn)證

驗(yàn)證組是 Spring Boot 驗(yàn)證框架的一個(gè)強(qiáng)大功能,允許您根據(jù)其他輸入值或應(yīng)用程序狀態(tài)應(yīng)用條件驗(yàn)證規(guī)則。

現(xiàn)在有一個(gè)包含三個(gè)字段的User類的情況下:firstName、lastName和email。我們要確保如果 email 字段為空,則 firstName 或 lastName 字段必須非空。否則,所有三個(gè)字段都應(yīng)該正常驗(yàn)證。

為此,我們將定義兩個(gè)驗(yàn)證組:EmailNotEmpty 和 Default。EmailNotEmpty 組將包含當(dāng) email 字段不為空時(shí)的驗(yàn)證規(guī)則,而 Default 組將包含所有三個(gè)字段的正常驗(yàn)證規(guī)則。

創(chuàng)建帶有驗(yàn)證組的 User 類

public class User {
@NotBlank(groups = Default.class)
private String firstName;

@NotBlank(groups = Default.class)
private String lastName;

@Email(groups = EmailNotEmpty.class)
private String email;

// getters and setters omitted for brevity
public interface EmailNotEmpty {}
public interface Default {}

}
請(qǐng)注意,我們在User類中定義了兩個(gè)接口,EmailNotEmpty和 Default。這些將作為我們的驗(yàn)證組。

接下來,我們更新Controller使用這些驗(yàn)證組

@RestController
@RequestMapping(“/users”)
@Validated
public class UserController {
public ResponseEntity createUser(
@Validated({org.example.model.ex6.User.EmailNotEmpty.class}) @RequestBody User userWithEmail,
@Validated({User.Default.class}) @RequestBody User userWithoutEmail)
{
// Create the user and return a success response

}

}
我們已將@Validated注釋添加到我們的控制器,表明我們想要使用驗(yàn)證組。我們還更新了 createUser 方法,將兩個(gè) User 對(duì)象作為輸入,一個(gè)在 email 字段不為空時(shí)使用,另一個(gè)在它為空時(shí)使用。

@Validated 注釋用于指定將哪個(gè)驗(yàn)證組應(yīng)用于每個(gè) User 對(duì)象。對(duì)于 userWithEmail 參數(shù),我們指定了 EmailNotEmpty 組,而對(duì)于 userWithoutEmail 參數(shù),我們指定了 Default 組。

進(jìn)行這些更改后,現(xiàn)在將根據(jù)“電子郵件”字段是否為空對(duì)“用戶”類進(jìn)行不同的驗(yàn)證。如果為空,則 firstName 或 lastName 字段必須非空。否則,所有三個(gè)字段都將正常驗(yàn)證。

7 對(duì)復(fù)雜邏輯使用跨域驗(yàn)證

如果需要驗(yàn)證跨多個(gè)字段的復(fù)雜輸入規(guī)則,可以使用跨字段驗(yàn)證來保持驗(yàn)證邏輯的組織性和可維護(hù)性。跨字段驗(yàn)證可確保所有輸入值均有效且彼此一致,從而防止出現(xiàn)意外行為。

假設(shè)我們有一個(gè)表單,用戶可以在其中輸入任務(wù)的開始日期和結(jié)束日期,并且我們希望確保結(jié)束日期不早于開始日期。我們可以使用跨域驗(yàn)證來實(shí)現(xiàn)這一點(diǎn)。

首先,我們定義一個(gè)自定義驗(yàn)證注解EndDateAfterStartDate:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = EndDateAfterStartDateValidator.class)
public @interface EndDateAfterStartDate {
String message() default “End date must be after start date”;
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
然后,我們創(chuàng)建驗(yàn)證器EndDateAfterStartDateValidator:

public class EndDateAfterStartDateValidator implements ConstraintValidator<EndDateAfterStartDate, TaskForm> {
@Override
public boolean isValid(TaskForm taskForm, ConstraintValidatorContext context) {
if (taskForm.getStartDate() == null || taskForm.getEndDate() == null) {
return true;
}

    return taskForm.getEndDate().isAfter(taskForm.getStartDate());
}

}
最后,我們將EndDateAfterStartDate注釋應(yīng)用于我們的表單對(duì)象TaskForm:

@EndDateAfterStartDate
public class TaskForm {
@NotNull
@DateTimeFormat(pattern = “yyyy-MM-dd”)
private LocalDate startDate;

@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate;

}
現(xiàn)在,當(dāng)用戶提交表單時(shí),驗(yàn)證框架將自動(dòng)檢查結(jié)束日期是否晚于開始日期,如果不是,則提供有意義的錯(cuò)誤消息。

8 對(duì)驗(yàn)證錯(cuò)誤使用異常處理

可以使用異常處理ExceptionHandler來統(tǒng)一捕獲和處理驗(yàn)證錯(cuò)誤。

以下是如何在 Spring Boot 中使用異常處理來處理驗(yàn)證錯(cuò)誤的示例:

@RestControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {

@ExceptionHandler(MethodArgumentNotValidException.class)
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
                                                              HttpHeaders headers, HttpStatus status,
                                                              WebRequest request) {
    Map<String, Object> body = new LinkedHashMap<>();
    body.put("timestamp", LocalDateTime.now());
    body.put("status", status.value());

    // Get all errors
    List<String> errors = ex.getBindingResult()
            .getFieldErrors()
            .stream()
            .map(x -> x.getDefaultMessage())
            .collect(Collectors.toList());

    body.put("errors", errors);

    return new ResponseEntity<>(body, headers, status);
}

}

    在這里,我們創(chuàng)建了一個(gè)用 @RestControllerAdvice 注解的 RestExceptionHandler 類來處理我們的 REST API 拋出的異常。然后我們創(chuàng)建一個(gè)用@ExceptionHandler注解的方法來處理在驗(yàn)證失敗時(shí)拋出的 MethodArgumentNotValidException。

    在處理程序方法中,我們創(chuàng)建了一個(gè) Map 對(duì)象來保存錯(cuò)誤響應(yīng)的詳細(xì)信息,包括時(shí)間戳、HTTP 狀態(tài)代碼和錯(cuò)誤消息列表。我們使用 MethodArgumentNotValidException 對(duì)象的 getBindingResult() 方法獲取所有驗(yàn)證錯(cuò)誤并將它們添加到錯(cuò)誤消息列表中。

    最后,我們返回一個(gè)包含錯(cuò)誤響應(yīng)詳細(xì)信息的ResponseEntity對(duì)象,包括作為響應(yīng)主體的錯(cuò)誤消息列表、HTTP 標(biāo)頭和 HTTP 狀態(tài)代碼。

    有了這個(gè)異常處理代碼,我們的 REST API 拋出的任何驗(yàn)證錯(cuò)誤都將被捕獲并以結(jié)構(gòu)化和有意義的格式返回給用戶,從而更容易理解和解決問題。

9 測試你的驗(yàn)證邏輯

需要為你的驗(yàn)證邏輯編寫單元測試,以幫助確保它正常工作。

@DataJpaTest
public class UserValidationTest {

@Autowired
private TestEntityManager entityManager;

@Autowired
private Validator validator;

@Test
public void testValidation() {
    User user = new User();
    user.setFirstName("John");
    user.setLastName("Doe");
    user.setEmail("invalid email");

    Set<ConstraintViolation<User>> violations = validator.validate(user);

    assertEquals(1, violations.size());
    assertEquals("must be a well-formed email address", violations.iterator().next().getMessage());
}

}

    我們使用 JUnit 5 編寫一個(gè)測試來驗(yàn)證具有無效電子郵件地址的“用戶”對(duì)象。然后我們使用 Validator 接口來驗(yàn)證 User 對(duì)象并檢查是否返回了預(yù)期的驗(yàn)證錯(cuò)誤。

10 考慮客戶端驗(yàn)證

客戶端驗(yàn)證可以通過向用戶提供即時(shí)反饋并減少對(duì)服務(wù)器的請(qǐng)求數(shù)量來改善用戶體驗(yàn)。但是,不應(yīng)依賴它作為驗(yàn)證輸入的唯一方法??蛻舳蓑?yàn)證很容易被繞過或操縱,因此必須在服務(wù)器端驗(yàn)證輸入,以確保安全性和數(shù)據(jù)完整性。

總結(jié)

有效的驗(yàn)證對(duì)于任何 Web 應(yīng)用程序的穩(wěn)定性和安全性都是必不可少的。Spring Boot 提供了一套工具和庫來簡化驗(yàn)證邏輯并使其更易于維護(hù)。通過遵循本文中討論的最佳實(shí)踐,您可以確保您的驗(yàn)證組件有效并提供出色的用戶體驗(yàn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-695726.html

到了這里,關(guān)于【Spring】SpringBoot的10個(gè)參數(shù)驗(yàn)證技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot開發(fā)小技巧使用(DEBUG、啟動(dòng)圖標(biāo)修改、Lombok、devtools、Spring Initializr)

    SpringBoot開發(fā)小技巧使用(DEBUG、啟動(dòng)圖標(biāo)修改、Lombok、devtools、Spring Initializr)

    在resources/application.properties中添加如下,開啟DEBUG功能: 然后啟動(dòng)springboot應(yīng)用,就可以看到DEBUG的日志。Positive表示生效,Negative表示不生效。如下所示: 下載百度的logo到resouces目錄下,然后在resources/application.properties添加如下內(nèi)容: 最后啟動(dòng)springboot應(yīng)用。打印的日志如下,

    2024年02月15日
    瀏覽(17)
  • 如何實(shí)現(xiàn) Java SpringBoot 自動(dòng)驗(yàn)證入?yún)?shù)據(jù)的有效性

    如何實(shí)現(xiàn) Java SpringBoot 自動(dòng)驗(yàn)證入?yún)?shù)據(jù)的有效性

    Java SpringBoot 通過javax.validation.constraints下的注解,實(shí)現(xiàn)入?yún)?shù)據(jù)自動(dòng)驗(yàn)證 如果碰到 @NotEmpty 否則不生效,注意看下 @RequestBody 前面是否加上了 @Valid Validation常用注解匯總 Constraint 詳細(xì)信息 @Null 被注釋的元素必須為 null @NotNull 被注釋的元素必須不為 null @NotBlank 被注釋的元素不能

    2023年04月13日
    瀏覽(16)
  • 【Spring實(shí)戰(zhàn)項(xiàng)目】SpringBoot3整合WebSocket+攔截器實(shí)現(xiàn)登錄驗(yàn)證!從原理到實(shí)戰(zhàn)

    【Spring實(shí)戰(zhàn)項(xiàng)目】SpringBoot3整合WebSocket+攔截器實(shí)現(xiàn)登錄驗(yàn)證!從原理到實(shí)戰(zhàn)

    ???? 歡迎光臨,終于等到你啦 ???? ??我是 蘇澤 ,一位對(duì)技術(shù)充滿熱情的探索者和分享者。???? ??持續(xù)更新的專欄 《Spring 狂野之旅:從入門到入魔》 ?? 本專欄帶你從Spring入門到入魔 ? 這是蘇澤的個(gè)人主頁可以看到我其他的內(nèi)容哦???? 努力的蘇澤 http://suzee.blog.

    2024年04月17日
    瀏覽(21)
  • Springboot實(shí)現(xiàn)優(yōu)雅的參數(shù)校驗(yàn)(Spring Validation)和 if else說再見

    Springboot實(shí)現(xiàn)優(yōu)雅的參數(shù)校驗(yàn)(Spring Validation)和 if else說再見

    當(dāng)我們想提供可靠的 API 接口,對(duì)參數(shù)的校驗(yàn),以保證最終數(shù)據(jù)入庫的正確性,是 必不可少 的活。比如下圖就是 我們一個(gè)項(xiàng)目里 新增一個(gè)菜單校驗(yàn) 參數(shù)的函數(shù),寫了一大堆的 if else 進(jìn)行校驗(yàn),非常的不優(yōu)雅,比起枯燥的CRUD來說,參數(shù)校驗(yàn)更是枯燥。這只是一個(gè)創(chuàng)建菜單的

    2023年04月15日
    瀏覽(20)
  • 【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解

    【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解

    訪問不同的路徑,就是發(fā)送不同的請(qǐng)求.在發(fā)送請(qǐng)求時(shí),可能會(huì)帶?些參數(shù),所以我們在學(xué)習(xí)Spring的請(qǐng)求時(shí),主要是學(xué)習(xí)如何傳遞參數(shù)到后端以及后端如何接收. 下面博主會(huì)對(duì)傳遞參數(shù)進(jìn)行一個(gè)詳解,咱們主要是使?瀏覽器和Postman來模擬 當(dāng)我們運(yùn)行后,用瀏覽器進(jìn)行訪問 http://127.0.

    2024年04月12日
    瀏覽(30)
  • Java Spring 通過 AOP 實(shí)現(xiàn)方法參數(shù)的重新賦值、修改方法參數(shù)的取值

    Java Spring 通過 AOP 實(shí)現(xiàn)方法參數(shù)的重新賦值、修改方法參數(shù)的取值

    我創(chuàng)建的項(xiàng)目項(xiàng)目為 SpringBoot 項(xiàng)目 這里以對(duì)前端傳遞過來的加密數(shù)據(jù)進(jìn)行解密為例 注解 控制器方法 方式一:通過環(huán)繞通知實(shí)現(xiàn) [個(gè)人比較推薦] 方式二:通過前置通知 + 反射實(shí)現(xiàn) Java ReflectUtil 反射相關(guān)的工具類 由于 JDK 8 中有關(guān)反射相關(guān)的功能自從 JDK 9 開始就已經(jīng)被限制了

    2024年02月04日
    瀏覽(24)
  • Springboot 實(shí)踐(10)spring cloud 與consul配置運(yùn)用之服務(wù)的注冊與發(fā)現(xiàn)

    ????????前文講解,完成了springboot、spring security、Oauth2.0的繼承,實(shí)現(xiàn)了對(duì)系統(tǒng)資源的安全授權(quán)、允許獲得授權(quán)的用戶訪問,也就是實(shí)現(xiàn)了單一系統(tǒng)的全部技術(shù)開發(fā)內(nèi)容。 ????????Springboot是微服務(wù)框架,單一系統(tǒng)只能完成指定系統(tǒng)的功能;那么多個(gè)單一系統(tǒng)是如何實(shí)現(xiàn)

    2024年02月12日
    瀏覽(20)
  • 【Java Spring】SpringBoot Bean詳解

    【Java Spring】SpringBoot Bean詳解

    上一節(jié)我們介紹了五大類注解,這一節(jié)介紹方法注解@Bean,@Bean作用的對(duì)象是方法, 該注解需要搭配五大類注解同時(shí)進(jìn)行使用 ,因?yàn)轭惙椒ǖ臄?shù)量遠(yuǎn)遠(yuǎn)大于類的數(shù)量,如果使用@Bean注解標(biāo)記方法的類沒有被標(biāo)記,那么Spring Boot項(xiàng)目在啟動(dòng)時(shí)需要遍歷所有的類的所有方法,開銷無

    2024年04月27日
    瀏覽(21)
  • Java EE 突擊 10 - Spring MVC 程序開發(fā) (1)

    Java EE 突擊 10 - Spring MVC 程序開發(fā) (1)

    這個(gè)專欄給大家介紹一下 Java 家族的核心產(chǎn)品 - SSM 框架 JavaEE 進(jìn)階專欄 Java 語言能走到現(xiàn)在 , 仍然屹立不衰的原因 , 有一部分就是因?yàn)?SSM 框架的存在 接下來 , 博主會(huì)帶大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相關(guān)知識(shí)點(diǎn) 并且?guī)ьI(lǐng)大家進(jìn)行環(huán)境的配置 , 讓大家真正用好

    2024年02月13日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包