# 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;
}
}
```