자바 SpringBoot 사용자 정의 주석 및 사용자 정의 해석 기 구현 대상 자동 주입 작업
5642 단어 자바SpringBoot주해개체 주입
해석 기 논리 프로 세 스 도표
배경 해석 기
우선,자바 배경 에 해상도 기 를 작 성 했 습 니 다.코드 는 다음 과 같 습 니 다.
import com.ruoyi.framework.interceptor.annotation.LoginUser;
import com.ruoyi.project.WebMoudle.WebUser.domain.WebUser;
import com.ruoyi.project.WebMoudle.WebUser.service.IWebUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
/**
* @LoginUser controller
* , controller *
* @author yangz
*/
@Service
public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
// service
@Autowired
private IWebUserService webUserService;
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterType().isAssignableFrom(WebUser.class) && parameter.hasParameterAnnotation(LoginUser.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container,
NativeWebRequest request, WebDataBinderFactory factory) throws Exception {
// request ID, springBoot
Object object = request.getAttribute(AuthorizationInterceptor.LOGIN_USER_KEY, RequestAttributes.SCOPE_REQUEST);
if (object == null) {
return null;
}
//
Long userId=(Long) object;
WebUser user = webUserService.selectWebUserById(userId);
return user;
}
}
그 다음 에,나 는 차단 기 설정 클래스 를 만들어 서,차단 기 를 spring 용기 에 주입 했다
import com.ruoyi.framework.interceptor.LoginUserHandlerMethodArgumentResolver;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.List;
@Configuration
public class LoginUserConfig extends WebMvcConfigurerAdapter {
/**
* ,
* @return
*/
@Bean
public LoginUserHandlerMethodArgumentResolver getLoginUserHandlerMethodArgumentResolver(){
return new LoginUserHandlerMethodArgumentResolver();
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers){
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(getLoginUserHandlerMethodArgumentResolver());
}
}
마지막 으로 우리 의 스위치,즉 사용자 정의 주해 LoginUser 주해 입 니 다.controller 방법 에서 매개 변수 가 이 주 해 를 사용 하면 우리 의 해석 기 를 대상 으로 주입 하도록 촉발 합 니 다.그러면 저 는 자신 만 의 주 해 를 정의 해 야 합 니 다.
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* ,
* ,
* @author lipengjun
* @email [email protected]
* @date 2017-03-23 20:39
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginUser {
}
그리고 작은 프 리 젠 테 이 션 으로 사용 하 는 방법 입 니 다.
@RequestMapping(value = "/prepay")
@ResponseBody
public Map<String,Object> prepay(@LoginUser WebUser webUser){
// , request userId controller webuser webUser
}
추가 지식:Springboot 사용자 정의 주석 기반 자동 조립1.자바 bean 정의
@Data //lombok
public class User {
private Integer userId;
private String userName;
}
2.configuration 클래스 만 들 기
public class UserConfig {
@Bean
public User getUser(){
User user = new User();
user.setUserId(1);
user.setUserName(" ");
return user;
}
}
3.주 해 를 정의 한다
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(UserConfig.class)
public @interface EnableAutoImport {
}
4.호출
@SpringBootApplication
@EnableAutoImport //
public class DemoApplication implements InitializingBean {
// InitializingBean bean afterPropertiesSet
@Autowired
private User user; // user
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
public void afterPropertiesSet() throws Exception {
//
System.out.println(user.getUserName());
}
}
이상 의 자바 SpringBoot 사용자 정의 주석 과 사용자 정의 해석 기 실현 대상 자동 주입 작업 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.