starter开发步骤
实质上是配置自动装配进行bean的自动装配
一 引入依赖包
二 编写配置类
业务需求将实体类转为配置字符串前缀与Json格式字符串
业务类
@Data
public class MyJsonService {
private String name;
public String objectToJson(Object obj) {
return name + "@" + JSON.toJSONString(obj);
}
}
配置类
@Data
@ConfigurationProperties(prefix = "hx.json")
public class MyJsonProperties {
public static final String HX_DEFAULT = "hx default";
private String name = HX_DEFAULT;
}
配置类从配置文件读取 eg: name
hx.json.name=“hello”
name为hello
三 编写自动装配类及其spring.factories
配置由配置类进行注入
@Configuration
@ConditionalOnClass(MyJsonService.class)
@EnableConfigurationProperties(MyJsonProperties.class)
public class MyJsonAutoConfiguration {
@Autowired
private MyJsonProperties myJsonProperties;
@Bean
@ConditionalOnMissingBean(MyJsonService.class)
public MyJsonService myJsonService() {
MyJsonService myJsonService = new MyJsonService();
myJsonService.setName(myJsonProperties.getName());
return myJsonService;
}
}
注解conditional missing bean
指定自动装配类位置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.hx.json.config.MyJsonAutoConfiguration
四 引用使用
pom
<dependency>
<groupId>org.hx</groupId>
<artifactId>json-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
bean
/**
* User
* @author 35762
*/
@Data
@Accessors(chain = true)
public class User {
int id;
String name;
}
@RestController
public class JsonRestController {
@Autowired
MyJsonService myJsonService;
@GetMapping
public String getJsonString(){
User hx = new User().setName("hx").setId(222);
return myJsonService.objectToJson(hx);
}
}
代码地址
https://gitee.com/xinghuang96/my-define-starter