# turtle-formatter **Repository Path**: livecsharp/turtle-formatter ## Basic Information - **Project Name**: turtle-formatter - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-23 - **Last Updated**: 2024-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ###### 具体实现 ####### 一、Starter项目结构 ```txt ├─pom.xml //maven 依赖管理文件 ├─src | ├─main | | ├─resources | | | ├─META-INF | | | | └spring.factories //spring boot 自动装配文件 | | ├─java | | | ├─com | | | | ├─turtle | | | | | ├─turtleformatter | | | | | | ├─package-info.java | | | | | | ├─formatter | | | | | | | └DateFormatter.java //业务功能类 | | | | | | ├─autoconfigure | | | | | | | ├─FormatterAutoConfiguration.java //自动配置类 | | | | | | | └FormatterProperties.java //配置属性类 ``` ####### 二、Starter项目依赖 ```xml org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-configuration-processor true ``` ####### 三、配置属性类 ```java package com.turtle.turtleformatter.autoconfigure; import org.springframework.boot.context.properties.ConfigurationProperties; /** * 属性类 */ @ConfigurationProperties(prefix = "format") public class FormatterProperties { private String pattern = "yyyy-MM-dd hh:mm:ss"; public String getPattern() { return pattern; } public void setPattern(String pattern) { this.pattern = pattern; } } ``` ####### 四、业务功能类 ```java package com.turtle.turtleformatter.formatter; import java.text.SimpleDateFormat; import java.util.Date; /** * 功能类 */ public class DateFormatter { private String pattern; public DateFormatter(String pattern) { this.pattern = pattern; } public String formatDate(Date date) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); String formatResult = sdf.format(date); return formatResult; } } ``` ####### 五、自动配置类 ```java package com.turtle.turtleformatter.autoconfigure; import com.turtle.turtleformatter.formatter.DateFormatter; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 自动配置类 */ @Configuration @EnableConfigurationProperties(FormatterProperties.class) @ConditionalOnClass(DateFormatter.class) @ConditionalOnProperty(prefix = "format", name = "enabled", havingValue = "true") public class FormatterAutoConfiguration { private final FormatterProperties formatterProperties; public FormatterAutoConfiguration(FormatterProperties formatterProperties) { this.formatterProperties = formatterProperties; } @Bean public DateFormatter dateFormatter(){ return new DateFormatter(formatterProperties.getPattern()); } } ``` ####### 六、自动装配文件 ```factories org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.turtle.turtleformatter.autoconfigure.FormatterAutoConfiguration ``` ####### 七、项目使用方式 1. 引用依赖 ```xml com.turtle turtle-formatter-spring-boot-starter 1.0.0 ``` 2. 配置 ```yaml format: pattern: yyyy-MM-dd enabled: true ``` 3. 使用 ```java package turtle.formatter.web.controller; import com.turtle.turtleformatter.formatter.DateFormatter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; @RestController public class FormatterController { @Autowired private DateFormatter dateFormatter; @GetMapping("/date") public String date(){ Date date = new Date(); String result = dateFormatter.formatDate(date); return result; } } ```