19/03/2026
Spring Mobile: Fornemmelse for enheder
I den stadigt voksende verden af webudvikling er det afgørende at kunne levere en problemfri brugeroplevelse på tværs af et utal af enheder. Fra desktops til smartphones og tablets, hver enhed har sine egne unikke egenskaber og visningskrav. Her kommer Spring Mobile ind i billedet som en moderne udvidelse til det populære Spring Web MVC-framework. Det forenkler processen med at udvikle webapplikationer, der skal være fuldt ud eller delvist kompatible med forskellige enhedsplatforme, med minimal indsats og mindre boilerplatkode.

Hvad er Spring Mobile?
Spring Mobile er et open-source-projekt designet til at hjælpe udviklere med at tackle udfordringerne ved at understøtte flere enhedstyper i deres webapplikationer. Dets primære mål er at gøre det nemmere at detektere og håndtere forskellige enheder, der tilgår din applikation, og derefter levere den bedst mulige brugeroplevelse baseret på den pågældende enhed.
Kernefunktioner i Spring Mobile
Spring Mobile tilbyder en række nyttige funktioner, der gør det nemt at implementere enhedsbevidsthed i dine applikationer:
Automatisk Enhedsdetektion
Spring Mobile leveres med et indbygget server-side enhedsopløserabstraktionslag. Dette lag analyserer alle indkommende anmodninger og detekterer information om afsenderenheden, såsom enhedstype (mobil, tablet, normal/desktop), operativsystem og andre relevante detaljer. Dette gør det muligt for din applikation at reagere dynamisk på forskellige enheder uden behov for manuel intervention.
Sidepræferencehåndtering (Site Preference Management)
Med Site Preference Management giver Spring Mobile brugerne mulighed for at vælge deres foretrukne visning af webstedet – enten mobil-, tablet- eller normal visning. Selvom denne funktion i visse tilfælde kan betragtes som en deprecieret teknik sammenlignet med den mere dynamiske DeviceDelegatingViewresolver, tillader den brugerne at have kontrol over, hvordan de ser indholdet, hvilket kan være nyttigt i specifikke scenarier.
Sideomskifter (Site Switcher)
Site Switcher-funktionen er i stand til automatisk at skifte brugerne til den mest passende visning i henhold til deres enhedstype. Hvis en bruger tilgår din side fra en mobiltelefon, vil de blive præsenteret for en mobiloptimeret version af siden, mens en desktopbruger vil se standardversionen.
Enhedsbevidst Visningshåndtering (Device Aware View Manager)
Normalt, afhængigt af enhedstypen, omdirigeres brugeranmodninger til et specifikt websted, der er designet til at håndtere specifikke enheder. Spring Mobiles View Manager giver udviklere fleksibilitet til at placere alle visninger i et foruddefineret format. Spring Mobile vil derefter automatisk administrere de forskellige visninger baseret på enhedstypen. Dette betyder, at du kan have separate visningsfiler (f.eks. `index.ftl` til desktop, `mobile/index.ftl` til mobil og `tablet/index.ftl` til tablet), og Spring Mobile vil automatisk vælge den korrekte.
Opbygning af en Demoapplikation med Spring Mobile
Lad os nu oprette en simpel demoapplikation ved hjælp af Spring Mobile med Spring Boot og Freemarker Template Engine for at demonstrere, hvordan man fanger enhedsoplysninger med minimal kodning.

Maven Afhængigheder
Først skal vi tilføje Spring Mobile-afhængigheden til vores `pom.xml` fil:
<dependency> <groupId>org.springframework.mobile</groupId> <artifactId>spring-mobile-device</artifactId> <version>1.1.5.RELEASE</version> </dependency>Oprettelse af Freemarker Skabeloner
Vi skal oprette separate Freemarker-filer for at håndtere forskellige enhedstyper. Opret mapperne `mobile` og `tablet` under `src/main/resources/templates` og placer `index.ftl`-filer deri.
└── src └── main └── resources └── templates └── index.ftl └── mobile └── index.ftl └── tablet └── index.ftlIndsæt simpel HTML i hver `index.ftl`-fil for at vise, hvilken enhedstype der detekteres:
<h1>Du er i browser version</h1>Afhængigt af enhedstypen vil indholdet inde i `
`-tagget ændre sig.
Aktivering af DeviceDelegatingViewresolver
For at aktivere Spring Mobiles `DeviceDelegatingViewresolver`-service skal vi tilføje følgende egenskab i `application.properties`:
spring.mobile.devicedelegatingviewresolver.enabled=trueSidepræferencefunktionaliteten er aktiveret som standard i Spring Boot, når du inkluderer Spring Mobile-starteren. Den kan deaktiveres ved at sætte følgende egenskab til `false`:
spring.mobile.sitepreference.enabled=trueTilføjelse af Freemarker Egenskaber
For at Spring Boot kan finde og rendere vores skabeloner, skal vi tilføje følgende til `application.properties`:
spring.freemarker.template-loader-path=classpath:/templates sspring.freemarker.suffix=.ftlOprettelse af en Controller
Nu skal vi oprette en Controller-klasse til at håndtere den indkommende anmodning. Vi bruger `@GetMapping`-annotationen:
@Controller public class IndexController { @GetMapping("/") public String greeting(Device device) { String deviceType = "browser"; String platform = "browser"; String viewName = "index"; if (device.isNormal()) { deviceType = "browser"; } else if (device.isMobile()) { deviceType = "mobile"; viewName = "mobile/index"; } else if (device.isTablet()) { deviceType = "tablet"; viewName = "tablet/index"; } platform = device.getDevicePlatform().name(); if (platform.equalsIgnoreCase("UNKNOWN")) { platform = "browser"; } return viewName; } }I denne controller injiceres `Device`-objektet, som indeholder information om den anmodende enhed. Metoder som `isMobile()`, `isTablet()` og `getDevicePlatform()` giver os mulighed for at identificere enheden og vælge den korrekte visning.
Java Konfiguration
For at aktivere enhedsdetektion i en Spring webapplikation skal vi tilføje noget konfiguration:
@Configuration public class AppConfig implements WebMvcConfigurer { @Bean public DeviceResolverHandlerInterceptor deviceResolverHandlerInterceptor() { return new DeviceResolverHandlerInterceptor(); } @Bean public DeviceHandlerMethodArgumentResolver deviceHandlerMethodArgumentResolver() { return new DeviceHandlerMethodArgumentResolver(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(deviceResolverHandlerInterceptor()); } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(deviceHandlerMethodArgumentResolver()); } } Vi skal også have en Spring Boot-konfigurationsklasse for at starte applikationen:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } Test af Applikationen
Når applikationen er startet (typisk på `http://localhost:8080`), kan vi bruge Google Chrome's Udviklerkonsol til at emulere forskellige enhedstyper. Åbn konsollen med `Ctrl + Shift + I` eller `F12`.
Emulering af Mobil Enhed
Aktiver mobilvisningen i konsollen (typisk et ikon med en telefon og en tablet). Vælg en enhed som f.eks. Nexus 6P fra dropdown-menuen og genindlæs siden. Du vil se, at indholdet ændrer sig til at vise "Du er i mobil version", da Spring Mobile har detekteret enheden og valgt `mobile/index.ftl`.
Emulering af Tablet Enhed
Gentag processen ved at vælge en tablet som iPad fra dropdown-menuen og genindlæs siden. Indholdet bør nu ændre sig til at vise "Du er i tablet version", idet den korrekte `tablet/index.ftl`-skabelon anvendes.
Test af Sidepræference
For at teste sidepræferencefunktionaliteten kan du tilføje URL-parametre til standard-URL'en:
- For mobilvisning: `?site_preference=mobile`
- For tabletvisning: `?site_preference=tablet`
Når siden genindlæses med disse parametre, vil den automatisk vise den specificerede visning, uanset den detekterede enhedstype. Hvis brugeren derefter navigerer væk fra siden og vender tilbage via standard-URL'en, vil den vende tilbage til den enhedsbaserede omdirigering.

Fordele ved Spring Mobile
Spring Mobile tilbyder en markant produktivitetsforbedring for udviklere. Ved at automatisere enhedsdetektion og visningshåndtering reducerer det behovet for kompleks front-end-scripting for at håndtere cross-browser-adfærd. Dette resulterer i kortere udviklingstid og en mere robust og brugervenlig applikation på tværs af forskellige enheder.
Konklusion
Spring Mobile er et uvurderligt værktøj for enhver Java-udvikler, der arbejder med Spring Framework og har brug for at understøtte flere enhedstyper. Dets enkle konfiguration og kraftfulde funktioner gør det nemt at implementere enhedsbevidsthed, hvilket fører til forbedret brugeroplevelse og øget udviklingseffektivitet. Ved at udnytte funktioner som automatisk enhedsdetektion og enhedsbevidst visningshåndtering kan du sikre, at din webapplikation ser godt ud og fungerer optimalt på enhver enhed.
Ofte Stillede Spørgsmål (FAQ)
Kan Spring Mobile detektere mobile enheder?
Ja, Spring Mobile er specifikt designet til at detektere mobile enheder samt tablets og almindelige desktopbrowsere gennem sit indbyggede enhedsopløserabstraktionslag.
Hvad er fordelene ved at bruge Spring Mobile?
Fordelene inkluderer forenklet udvikling af enhedsbevidste webapplikationer, automatisk detektion af enhedstype, reduceret behov for manuel scripting og en forbedret brugeroplevelse på tværs af forskellige enheder.
Hvordan vælger jeg, hvilken visning der skal bruges?
Spring Mobile bruger `DeviceDelegatingViewresolver` til automatisk at vælge den korrekte visning baseret på den detekterede enhedstype (mobil, tablet, normal). Du kan også bruge `site_preference`-URL-parameteren til manuelt at angive den ønskede visning.
Hvis du vil læse andre artikler, der ligner Spring Mobile: Fornemmelse for enheder, kan du besøge kategorien Software.
