찾다
Javajava지도 시간SpringMVC Annotation 개발에 대한 자세한 설명

SpringMVC에서 Controller는 사용자가 요청한 데이터를 비즈니스 처리 계층에서 처리한 후 Model로 캡슐화하여 해당 DispatcherServlet에서 배포한 요청을 처리하는 역할을 담당합니다. 표시용으로 봅니다. SpringMVC는 컨트롤러를 정의하는 매우 간단한 방법을 제공합니다. 특정 클래스를 상속하거나 특정 인터페이스를 구현할 필요가 없습니다. 클래스를 컨트롤러로 표시하기 위해 @Controller를 사용하고 @와 같은 주석을 사용하면 됩니다. RequestMapping 및 @RequestParam을 정의하여 URL 요청과 컨트롤러 메서드를 매핑하여 외부에서 컨트롤러에 액세스할 수 있도록 합니다. 또한 Controller는 HttpServletRequest 및 HttpServletResponse와 같은 HttpServlet 개체에 직접 의존하지 않으며 Controller의 메서드 매개 변수를 통해 유연하게 얻을 수 있습니다.

@Controller는 클래스를 표시하는 데 사용됩니다. 표시된 클래스는 SpringMVC 컨트롤러 개체입니다. 디스패치 프로세서는 이 주석을 사용하여 클래스의 메서드를 스캔하고 메서드가 @RequestMapping 주석을 사용하는지 여부를 감지합니다. @Controller는 컨트롤러 클래스를 정의할 뿐이며 @RequestMapping이라는 주석이 달린 메서드는 실제로 요청을 처리하는 프로세서입니다. 단순히 클래스에 @Controller 마크를 사용하는 것만으로는 그것이 SpringMVC의 컨트롤러 클래스라고 말할 수 없습니다. 왜냐하면 현재 Spring은 이를 인식하지 못하기 때문입니다. 그렇다면 이를 인식하기 위해 Spring을 어떻게 사용합니까? 이때 관리를 위해 이 컨트롤러 클래스를 Spring에 넘겨주어야 합니다. 두 가지 방법이 있습니다.

   (1) SpringMVC 구성 파일에 MyController의 Bean 객체를 정의합니다.

  (2) SpringMVC 구성 파일에서 @Controller로 표시된 컨트롤러를 찾을 수 있는 위치를 Spring에 알려줍니다.


1.1 검증 이해

프로젝트에서는 일반적으로 페이지의 js 검증과 같이 프런트 엔드 검증이 더 많이 사용됩니다. 보안 요구 사항이 높은 경우 서버에서 확인을 수행하는 것이 좋습니다.

서버 확인:

제어 레이어 컨트롤러: 페이지에서 요청한 매개변수의 적법성을 확인합니다. 서버 제어 계층의 컨트롤러 검증은 클라이언트 유형(브라우저, 모바일 클라이언트, 원격 호출)을 구분하지 않습니다.

비즈니스 계층 서비스(주로 사용됨): 주로 주요 비즈니스 매개변수를 확인하며 서비스 인터페이스 매개변수에 사용되는 매개변수로 제한됩니다.

지속성 레이어 dao: 일반적으로 검증되지 않습니다.

1.2 springmvc 검증 요구 사항

springmvc는 Hibernate의 검증 프레임워크 검증을 사용합니다(Hibernate와는 아무 관련이 없습니다).

검증 아이디어:

페이지는 요청된 매개변수를 제출하고 이를 컨트롤러 메서드에 요청하며 검증을 위해 검증을 사용합니다. 확인에 오류가 있는 경우 페이지에 오류 메시지가 표시됩니다.

구체 요구 사항:

제품 수정, 확인 추가(제품 이름 길이, 생성 날짜가 비어 있지 않은 확인), 확인 오류가 있는 경우 제품 수정 페이지에 오류 메시지가 표시됩니다.

1.3 환경 준비

Hibernate의 검증 프레임워크 검증에 필요한 jar 패키지:

1.4 검증기 구성

클래스 경로 아래 springmvc.xml에서 구성:

    <!-- 校验器 --><bean><!-- Hibernate校验器--><property></property><!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下的ValidationMessages.properties --><property></property></bean><!-- 校验错误信息配置文件 --><bean><!-- 资源文件名--><property>   <list>    <value>classpath:CustomValidationMessages</value> </list>   </property><!-- 资源文件编码格式 --><property></property><!-- 对资源文件内容缓存时间,单位秒 --><property></property></bean>

1.5 검증기를 프로세스에 삽입 서버 어댑터

클래스 경로 아래 springmvc.xml에서 구성:

1.5.1 구성 방법 1

1.5.2 구성 방법 2

<!-- 自定义webBinder --><bean><property></property></bean><!-- 注解适配器 --><beanclass><property></property></beanclass>

1.6 pojo에 확인 규칙 추가

In ItemsCustom 확인 규칙 추가 .java에서:

/**
 * 商品信息的扩展类
 * @author Joanna.Yan
 * */public class ItemsCustom extends Items{//添加商品信息的扩展属性}

这里ItemsCustom直接继承的是Items,所以我们在Items中添加:

1.7CustomValidationMessages.properties

在classpath下新建CustomValidationMessages.properties文件,配置校验错误信息:

1.8捕获校验错误信息

一个BindingResult对应一个pojo。

1.9在页面显示校验错误信息

1.9.1方式一

在controller中将错误信息传到页面即可。

    //商品信息修改提交//在需要校验的pojo前添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息//注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。@RequestMapping("/editItemsSubmit")public String editItemsSubmit(Model model,HttpServletRequest request,Integer id,
            @Validated ItemsCustom itemsCustom,BindingResult bindingResult) throws Exception{        //获取校验错误信息if(bindingResult.hasErrors()){
            List<objecterror> allErrors=bindingResult.getAllErrors();for (ObjectError objectError : allErrors) {
                System.out.println(objectError.getDefaultMessage());
            }//将错误信息传到页面model.addAttribute("allErrors", allErrors);//出错,重新到商品页面return "items/editItems";
        }//调用service更新商品信息,页面需要将商品信息传到此方法        itemsService.updateItems(id, itemsCustom);        //重定向到商品的查询列表//        return "redirect:queryItems.action";//页面转发//        return "forward:queryItems.action";return "success";
    }</objecterror>

页面显示错误信息:

<if><foreach>${error.defaultMessage }<br></foreach></if>

1.9.2方式二

修改Controller方法:

    //商品信息修改提交//在需要校验的pojo前添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息//注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。@RequestMapping("/editItemsSubmit")public String editItemsSubmit(Model model,HttpServletRequest request,Integer id,
            @Validated ItemsCustom itemsCustom,BindingResult bindingResult) throws Exception{        //获取校验错误信息if(bindingResult.hasErrors()){
            List<objecterror> allErrors=bindingResult.getAllErrors();for (ObjectError objectError : allErrors) {
                System.out.println(objectError.getDefaultMessage());
            }//出错,重新到商品页面return "items/editItems";
        }//调用service更新商品信息,页面需要将商品信息传到此方法        itemsService.updateItems(id, itemsCustom);        //重定向到商品的查询列表//        return "redirect:queryItems.action";//页面转发//        return "forward:queryItems.action";return "success";
    }</objecterror>

商品修改页面显示错误信息:

页头:

在需要显示错误信息地方:

<hasbinderrors><foreach>${error.defaultMessage }<br></foreach></hasbinderrors>

表示如果item参数绑定校验错误下边显示错误信息。

1.10分组校验

1.10.1需求

在pojo中定义校验规则,而pojo是被多个controller所共用,当不同的controller方法对同一个pojo进行校验,但是每个controller方法需要不同的校验。

解决方法:

定义多个校验分组(其实是一个java接口),分组中定义有哪些规则。

每个controller方法使用不同的校验分组。

1.10.2校验分组

/**
 * 校验分组
 * @author Joanna.Yan
 * */public interface ValidGroup1 {//接口中不需要定义任何方法,仅是对不同的校验规则进行分组//此分组只校验商品名称长度}
/**
 * 校验分组
 * @author Joanna.Yan
 * */public interface ValidGroup2 {//接口中不需要定义任何方法,仅是对不同的校验规则进行分组}

1.10.3在校验规则中添加分组

1.10.4在controller方法中使用指定分组的校验

1.10.4校验注解

@Null   被注释的元素必须为 null  

@NotNull    被注释的元素必须不为 null  

@AssertTrue     被注释的元素必须为 true  

@AssertFalse    被注释的元素必须为 false  

@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值  

@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值  

@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值  

@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值  

@Size(max=, min=)   被注释的元素的大小必须在指定的范围内  

@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内  

@Past   被注释的元素必须是一个过去的日期  

@Future     被注释的元素必须是一个将来的日期  

@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式  

Hibernate Validator 附加的 constraint  

@NotBlank(message =)   验证字符串非null,且长度必须大于0  

@Email  被注释的元素必须是电子邮箱地址  

@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内  

@NotEmpty   被注释的字符串的必须非空  

@Range(min=,max=,message=)  被注释的元素必须在合适的范围内

2.数据回显

2.1什么是数据回显

提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。

2.2pojo数据回显方法

springmvc默认对pojo数据进行回显,springmvc自动将形参中的pojo重新放回request域中,request的key为pojo的类名(首字母小写),如下:

controller方法:

    @RequestMapping("/editItemSubmit")public String editItemSubmit(Integer id,ItemsCustom itemsCustom)throws Exception{

springmvc自动将itemsCustom放回request,相当于调用下边的代码:

model.addAttribute("itemsCustom", itemsCustom);

jsp页面:

页面中的从“itemsCustom”中取数据。

如果key不是pojo的类名(首字母小写),可以使用@ModelAttribute完成数据回显。

@ModelAttribute作用如下:

(1)绑定请求参数到pojo并且暴露为模型数据传到视图页面。

此方法可实现数据回显效果。

// 商品修改提交@RequestMapping("/editItemSubmit")public String editItemSubmit(Model model,@ModelAttribute("item") ItemsCustom itemsCustom)

页面:

<tr>
<td>商品名称</td>
<td><input></td>
</tr><tr>
<td>商品价格</td>
<td><input></td>
</tr>

如果不用@ModelAttribute也可以使用model.addAttribute("item", itemsCustom)完成数据回显。

(2)将方法返回值暴露为模型数据传到视图页面

//商品分类@ModelAttribute("itemtypes")public Map<string> getItemTypes(){
        
        Map<string> itemTypes = new HashMap<string>();
        itemTypes.put("101", "数码");
        itemTypes.put("102", "母婴");        return itemTypes;
    }</string></string></string>

页面:

商品类型:<select><foreach><option>${itemtype.value }</option>        </foreach></select>

 

2.3简单类型数据回显

最简单方法使用model。

//简单数据类型回显
 model.addAttribute("id", id);

3.异常处理器

3.1异常处理思路

系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、通过测试手段减少运行时异常的发生。

系统的dao、service、controller出现异常都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:

springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。

3.2自定义异常类

对不同的异常类型定义异常类,继承Exception。

package joanna.yan.ssm.exception;/**
 * 系统自定义异常类,针对预期的异常。需要在程序中抛出此类异常。
 * @author Joanna.Yan
 * */public class CustomException extends Exception{//异常信息public String message;public CustomException(String message) {super();this.message = message;
    }public String getMessage() {return message;
    }public void setMessage(String message) {this.message = message;
    }
    
}

3.3全局异常处理器

思路:

系统遇到异常,在程序中手动抛出,dao抛给service、service抛给controller、controller抛给前端控制器,前端控制器调用全局异常处理器。

全局异常处理器处理思路:

解析出异常类型

如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面展示

如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)

springmvc提供一个HandlerExceptionResolver接口。

package joanna.yan.ssm.exception;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;public class CustomExceptionResolver implements HandlerExceptionResolver{/* * ex:系统抛出的异常     */@Overridepublic ModelAndView resolveException(HttpServletRequest request,
            HttpServletResponse repsonse, Object handler, Exception ex) {//handler就是处理器适配器要执行的Handler对象(只有一个method)//1.解析出异常类型//2.如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面展示//3.如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)CustomException customException=null;if(ex instanceof CustomException){
            customException=(CustomException)ex;
        }else{
            customException=new CustomException("未知错误");
        }//错误信息String message=customException.getMessage();
        ModelAndView modelAndView=new ModelAndView();//将错误信息传到页面modelAndView.addObject("message", message);//指向错误页面modelAndView.setViewName("error");return modelAndView;
    }

}

3.4错误页面

nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <base>"><title>错误提示</title><meta><meta><meta>    <meta><meta><!--<link rel="stylesheet" type="text/css" href="styles.css?1.1.11">-->

  

3.5在springmvc.xml配置全局异常处理器

    <!-- 全局异常处理器 
         只要实现HandlerExceptionResolver接口就是全局异常处理器--><bean></bean>

3.6异常测试

在controller、service、dao中任意一处需要手动抛出异常。

如果是程序中手动抛出的异常,在错误页面中显示自定义的异常信息,如果不是手动抛出异常说明是一个运行时异常,在错误页面只显示“未知错误”。

在商品修改的controller方法中抛出异常。

在service接口中抛出异常:

如果与业功能相关的异常,建议在service中抛出异常。

与业务功能没有关系的异常(比如形参校验),建议在controller中抛出。

上边的功能,建议在service中抛出异常。

 4.图片上传

4.1配置虚拟目录

在Tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:

<context></context>

访问http://localhost:8080/pic即可访问F:\develop\upload\temp下的图片。

注意:在图片虚拟目录中,一定要将图片目录分级创建(提高I/O性能),一般我们采用按日期(年、月、日)进行分级创建。

4.2配置解析器

springmvc中对多部件类型解析。

 

在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。

在springmvc.xml中配置multipart类型解析器。

    <!-- 文件上传 --><bean><!-- 设置上传文件的最大尺寸为5MB --><property><value>5242880</value></property></bean>

4.3加入上传图片的jar

上边的解析器内部使用下边的jar进行图片上传。

4.4上传图片

controller:

    @RequestMapping("/editItemsSubmit")public String editItemsSubmit(
            Model model,
            HttpServletRequest request,
            Integer id,
            @ModelAttribute("items") @Validated(value={ValidGroup1.class}) ItemsCustom itemsCustom,
            BindingResult bindingResult,
            MultipartFile items_pic//接收商品图片) throws Exception{        //获取校验错误信息if(bindingResult.hasErrors()){
            List<objecterror> allErrors=bindingResult.getAllErrors();for (ObjectError objectError : allErrors) {
                System.out.println(objectError.getDefaultMessage());
            }//将错误信息传到页面model.addAttribute("allErrors", allErrors);//可以直接使用model将提交的pojo回显到页面model.addAttribute("items", itemsCustom);//简单数据类型回显model.addAttribute("id", id);//出错,重新到商品页面return "items/editItems";
        }        //上传图片String originalFilename=items_pic.getOriginalFilename();if(items_pic!=null&&originalFilename!=null&&originalFilename.length()>0){//存储图片的物理路径String pic_path="F:\\develop\\upload\\temp\\";//新的图片名称String newFileName=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));//新图片File newFile=new File(pic_path+newFileName);//将内存中的数据写入磁盘            items_pic.transferTo(newFile);//将新图片名称写到itemsCustom中            itemsCustom.setPic(newFileName);
        }        //调用service更新商品信息,页面需要将商品信息传到此方法        itemsService.updateItems(id, itemsCustom);        //重定向到商品的查询列表//        return "redirect:queryItems.action";//页面转发//        return "forward:queryItems.action";return "success";
    }</objecterror>

页面:

form添加enctype="multipart/form-data",file的name与controller形参一致:


修改商品信息:
商品名称
商品价格
商品生产日期 "/>
商品图片 SpringMVC Annotation 개발에 대한 자세한 설명
 
商品简介

5.Json数据交互

5.1为什么要进行json数据交互

json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。

比如:webserivce接口,传输json数据。

5.2springmvc进行json交互

(1)请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便。

(2)请求key/value、输出json。次方法比较常用。

5.3环境准备 

5.3.1加载json转换的jar包

springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转换),如下:

5.3.2配置json转换器

在classpath/springmvc.xml,注解适配器中加入messageConverters

!--注解适配器 --><bean><property><list><bean></bean></list></property></bean>

注意:如果使用则不用定义上边的内容。

5.4json交互测试

这里分输入json串输出json串和输入key/value输出json两种情况进行测试。

新建jsonTest.jsp

nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <base>"><title>json交互测试</title><meta><meta><meta>    <meta><meta><!--<link rel="stylesheet" type="text/css" href="styles.css?1.1.11">--><script></script>  <script>  //请求json,输出的是json  function requestJson(){
          $.ajax({
              type:&#39;post&#39;,
              url:&#39;${pageContext.request.contextPath }/requestJson.action&#39;,
              contentType:&#39;application/json;charset=utf-8&#39;,              //数据格式是json串,商品信息              data:&#39;{"name":"手机","price":999}&#39;,
              success:function(data){//返回json结果                  alert(data);
              }
          });
      }      
      //请求key/value,输出的是json  function responseJson(){
          $.ajax({
              type:&#39;post&#39;,
              url:&#39;${pageContext.request.contextPath }/responseJson.action&#39;,              //请求是key/value这里不需要指定contentType,因为默认就是key/value类型  //contentType:&#39;application/json;charset=utf-8&#39;,  //数据格式是json串,商品信息              data:&#39;name=手机&price=999&#39;,
              success:function(data){//返回json结果                  alert(data);
              }
          });
      }      </script>
  
  
  <input> <input>
  

新建Controller:

package joanna.yan.ssm.controller;import joanna.yan.ssm.po.ItemsCustom;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;

@Controllerpublic class JsonTest {//请求json串(商品信息),输出的竖json(商品信息)//@RequestBody将请求的商品信息的json串转成itemsCustom对象//@ResponseBody将itemsCustom转成json输出@RequestMapping("/requestJson")public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom){        return itemsCustom;
    }    //请求key/value,输出的竖json@RequestMapping("/responseJson")public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){        return itemsCustom;
    }
}

(1)测试输入json串输出是json串

(2)测试输入key/value输出是json串

6.RESTful支持

6.1什么是RESTful

RESTful架构,是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以得到越来越多网站的采用。

RESTful(即Representational State Transfer的缩写)其实是一个开发理念,是对http的很好的诠释。

(1)对url进行规范,写RESTful格式的url

非REST的url:http://...../queryItems.action?id=001&type=T01

REST的url风格:http://..../items/001

  特点:url简洁,将参数通过url传到服务端

(2)对http的方法规范

不管是删除、添加、更新...使用url是一致的,如果进行删除,需要设置http的方法为delete,同理添加...

后台controller方法:判断http方法,如果是delete执行删除,如果是post执行添加。

(3)对http的contentType规范

请求时指定contentType,要json数据,设置成json格式的type...

目前完全实现RESTful的系统很少,一般只实现(1)、(3),对于(2)我们一个方法经常会同时存在增删改查,实现起来太费劲了。

下面举例实现(1)、(2)。

6.2REST的例子

6.2.1需求

查询商品信息,返回json数据。

6.2.2controller

定义方法,进行url映射使用REST风格的url,将查询商品信息的id传入controller。

输出json使用@ResponseBody将java对象输出json。

    //查询商品信息,输出json///itemsView/{id}里面的{id}表示占位符,通过@PathVariable获取占位符中的参数//如果占位符中的名称和形参名一致,在@PathVariable可以不指定名称@RequestMapping("/itemsView/{id}")public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id) throws Exception{
        ItemsCustom itemsCustom=itemsService.findItemsById(id);return itemsCustom;
    }

6.2.3REST方法的前端控制器配置

在web.xml增加配置:

  <!-- springmvc前端控制器,rest配置  -->
  <servlet>  <servlet-name>springmvc_rest</servlet-name>  
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  <init-param>  <param-name>contextConfigLocation</param-name>  
  <param-value>classpath:spring/springmvc.xml</param-value>  
  </init-param>  <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>  
  <servlet-name>springmvc_rest</servlet-name>  
  <url-pattern>/</url-pattern>
  </servlet-mapping>

6.3对静态资源的解析

配置前端控制器的url-parttern中指定/,对静态资源的解析出现问题:

在springmvc.xml中添加静态资源解析方法。

    <!-- 静态资源的解析 
         包括:js、css、img...--><resources></resources>
         <resources></resources>

위 내용은 SpringMVC Annotation 개발에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?Mar 17, 2025 pm 05:46 PM

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:45 PM

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?Mar 17, 2025 pm 05:44 PM

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:43 PM

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Mar 17, 2025 pm 05:35 PM

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.