Spring-boot读书笔记一Serialization/Deserialization

Serialization/Deserialization Effects
Serialization = Converting Java object → data format (JSON, XML, bytes)
Deserialization = Converting data format → Java object

Key Effects

  1. Data Persistence & Transfer
// AppProperties object:
AppProperties props = new AppProperties("MyApp", "192.168.1.1", 8080, security);

// Serialized to JSON:
{
  "name": "MyApp",
  "ip": "192.168.1.1", 
  "port": 8080,
  "security": {
    "enabled": true,
    "token": "abc123",
    "roles": ["admin", "user"]
  }
}

2. Configuration Binding
Spring Boot deserializes properties files into AppProperties:

# application.properties
app.sbip.ct.name=MyApp
app.sbip.ct.ip=192.168.1.1
app.sbip.ct.port=9090
app.sbip.ct.security.enabled=true
app.sbip.ct.security.token=secret123

3. API Communication`

// REST API automatically serializes/deserializes
@RestController
public class ConfigController {
    
    @GetMapping("/config")
    public AppProperties getConfig() {
        return appProperties; // Auto-serialized to JSON
    }
    
    @PostMapping("/config")
    public void updateConfig(@RequestBody AppProperties props) {
        // JSON auto-deserialized to AppProperties object
    }
}

4. Caching & Storage

  • Redis: Object → JSON/bytes for storage
  • Database: Object → JSON column or separate fields
  • File System: Object → JSON/XML files
  • Message Queues: Object → bytes for transmission

5. Session Management

  • Web sessions serialize objects to survive server restarts
  • Distributed sessions require serializable objects

Benefits for the AppProperties

  • Configuration Loading: Properties files → AppProperties object
  • API Responses: AppProperties → JSON for clients
  • Caching: Store configuration in Redis/memory
  • Logging: Easy conversion to readable formats
  • Testing: Create objects from test data files

Potential Issues

  • Final fields: May need special handling (the @ConstructorBinding solves this)
  • Missing constructors: Deserialization needs proper constructors
  • Circular references: Can cause infinite loops
  • Version compatibility: Schema changes break deserialization
posted @ 2025-12-31 01:14  kkbln  阅读(0)  评论(0)    收藏  举报