From PHP to Java: My Journey Refactoring E‑Commerce with Spring Boot
The author, a former PHP engineer at Mafengwo, chronicles a two‑day crash‑course in Java and Spring Boot, detailing the adoption of Lombok, Druid, Maven, and various annotations while navigating pitfalls such as bean scopes, database connections, and data format mismatches before successfully launching the new service.
Preparation
Hello, I am Jia Xiaowa from Mafengwo's travel platform R&D team. I was a PHP engineer and decided to rebuild the product and order core functions in Java after hearing the company’s tech stack shift.
After two days of intensive study, I learned Java basics, Spring Boot, Lombok, Druid, Maven, and various annotations.
Practical Digging
Spring Boot simplifies configuration, eliminating XML files. A simple demo prints a greeting: System.out.println("Hello, world!"); Using Lombok’s @Getter and @Setter annotations saves me from writing hundreds of accessor methods for the product entity.
To bridge existing PHP APIs, we created a PHP gateway that wraps PHP endpoints as HTTP services.
For database connections we adopted Alibaba’s Druid pool, which offers extensive monitoring and logging.
We also configured Maven for dependency management and used SkipperClient to retrieve DB credentials from the service registry.
Filling While Digging
We leveraged Spring’s IoC container: annotating a class with @Service registers it as a bean, and @Resource injects dependencies, avoiding manual setters.
When encountering NullPointerException, we learned that the consuming class must also be managed by Spring.
Exception handling was refined by letting the outermost layer catch and log errors, avoiding duplicated logs.
Data format mismatches between PHP’s snake_case and Java’s camelCase were solved with @JSONField (FastJSON) and @JsonProperty (Jackson) annotations.
Launch
Before going live we added a feature‑toggle switch to quickly roll back traffic if issues arise.
During launch we faced an emoji‑related MySQL error because the table used utf8 instead of utf8mb4. Switching the table encoding resolved the problem.
After extensive testing, debugging, and fixing issues such as bean scope, connection pool idle timeout, and cache invalidation, the Java microservice was successfully deployed.
Author: Mafengwo Travel Platform R&D Team
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Mafengwo Technology
External communication platform of the Mafengwo Technology team, regularly sharing articles on advanced tech practices, tech exchange events, and recruitment.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
