[Spring] 클라이언트 device 정보 간단하게 조회하기

2023. 7. 18. 22:24개발 공부/Java

서론

✅ Spring boot 에서 클라이언트 요청 시 어떤 디바이스 환경인지 조회하는 코드 정리해보았다.

나중을 위해 기억해놔야지!!!

 

 Spring AOP에 사용자 디바이스 정보를 조회하여 로그를쌓고 싶었다.

마침 아래 Spring 에서 제공하는 maven이 있길래 해당 라이브러리 추가하여 사용했다.

별도의 어려운 방법 없이 사용 가능하기 때문에 다른 방법이 있는지는 모르겠지만! 정상 작동확인했다.

 

 

우선 해당 라이브러리의 버전을 확인해야한다.

23.07.18 기준으로 안정적인 버전은 2.0.0.M3이었다.

 

아래 사이트에서 현재 버전을 확인할 수 있다.

👉 참고: https://spring.io/projects/spring-mobile#learn

 

버전을 확인했으면 이제 pom.xml에 repository와 dependency를 추가해주면 끝난다.

 

- repository 등록

<repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/libs-milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
</repository>

- dependency 등록

<dependency>
    <groupId>org.springframework.mobile</groupId>
    <artifactId>spring-mobile-device</artifactId>
    <version>2.0.0.M3</version> //여기에 위에서 확인한 버전 작성
</dependency>

- spring context 파일에 bean 등록

<!-- 모바일 디바이스  -->
<bean id="deviceResolver" class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />

👉 bean 등록안해주면 위 라이브러리 인식 못하고 UNKNOWN뜸

 

  • web.xml 작업
<filter>
    <filter-name>deviceResolverRequestFilter</filter-name>
    <filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>deviceResolverRequestFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

👉 web.xml→ 이거 안해주면 여기서 device 값 null찍힘

 

 

최종

원하는 곳에서 아래와 같이 사용하면된다.

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();	
Device device = DeviceUtils.getRequiredCurrentDevice(request);

 

아래와 같이 로그가 정상적으로 찍히는 것을 확인!

[22:10:56.000][I] - Device: [LiteDevice type=NORMAL]