准备要封装的组件
<groupId>com.itpsc</groupId>
<artifactId>com-itpsc-service</artifactId>
<version>1.0</version>
里面定义一个简单的类
public class UserService {
private String username;
private String password;
public void print() {
System.out.println("username=" + username + " password=" + password);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
mvn clean install发布到本地仓库。
新建一个starter
引入依赖
<groupId>com.itpsc.spring.boot</groupId>
<artifactId>itpsc-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.itpsc</groupId>
<artifactId>com-itpsc-service</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
编写读取配置类
下面的类用于读取yml或者properties中的配置信息
@ConfigurationProperties(prefix = "com.itpsc")
public class UserProperties {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
使配置生效,并创建需要使用的bean
@Configuration
@EnableConfigurationProperties(UserProperties.class)
public class UserAutoConfiguration {
@Bean
public UserService getBean(UserProperties userProperties) {
UserService userService = new UserService();
userService.setUsername(userProperties.getUsername());
userService.setPassword(userProperties.getPassword());
return userService;
}
}
自动装配
在resources目录下新建目录META-INF,在META-INF下新建文件spring.factories,该文件中添加如下内容。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.itpsc.spring.boot.starter.UserAutoConfiguration
使用
新建一个springboot工程,新增如下依赖
<dependency>
<groupId>com.itpsc.spring.boot</groupId>
<artifactId>itpsc-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
application.properties中添加如下信息
com.itpsc.username=itpsc
com.itpsc.password=itpsc@123
启动springboot
@SpringBootApplication
public class BootItpscTestApplication {
public static void main(String[] args) {
ApplicationContext applicationContext = SpringApplication.run(BootItpscTestApplication.class, args);
UserService userService = applicationContext.getBean(UserService.class);
userService.print();
}
}
输出结果
username=itpsc password=itpsc@123
如此,自动装配就完成了。