轻松五步教你学会自定义springboot start

   Spring Boot其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。Spring Boot 充分利用了 JavaConfig 的配置模式以及“约定优于配置”的理念,能够极大的简化基于 Spring MVC 的 Web 应用和 REST 服务开发。对于已经熟悉 Spring 生态系统的开发人员来说,Spring Boot 是一个很理想的选择.

   以前当自己想掌握或者学习此类新知识时,一般都是直接百度demo,相信很多同学也是这么做的,什么东西的hello world都是百度一下,本地运行ok啦,然后才心情舒畅,觉得可以开始啦。但这次的demo并没有参考任何一位大佬的博客,当然笔者作为开发界的战六渣也没有三头六臂直接凭空开干,全靠官方文档,也希望大家能明白,最好的学习资料都是官方文档,最好的学习资料都是官方文档,最好的学习资料都是官方文档。

  最要的事情说三遍,你在网上所百度到的demo不过是别人看懂官方文档后根据自己的理解搞出来的。废话了这么多。下面开始撸代码咯,起飞。。。

 目标:自定义lijin-springboot-start-redis替代官方的spring-boot-data-redis的功能(粗糙替代),能让程序读取我们自定义开头的配置文件。并且自动注册bean到spring的上下文中。

先看下完整的项目结构:

 轻松五步教你学会自定义springboot start_第1张图片

 第一步:新建一个maven项目,这个应该是个人都会的啦,如果这都不会,你还敢学springboot.

 第二步:在resources目录下新建META-INF文件夹,建立spring.factories,并在里面输入:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jin.lijin_springboot_start_redis.MyRedisAutoConfiguration

 目的是让spring发现并加载你自己写的东西,你想让spring帮你做事情,总得打个招呼,让别人知道你在哪里吧。这是只定义了一个AutoConfiguration的情形,如果是定义多个呢。如果定义多个需要这样,

轻松五步教你学会自定义springboot start_第2张图片

第一行是固定的,第二行起才是自定义的,每行以斜杠结尾,表示后面还有,最后一行不需要末尾加斜杠。

 第三步:由于需要读取自定义前缀的配置文件,所以定义一个实体类来接收。这里我们只定义两个参数,分别是redis的ip和port.能够连接到redis就行。

//接受默认配置文件中以 lijin 开头的数据
@ConfigurationProperties("lijin")
public class MyRedisProperties {
	
	private String myIp;
	private int myPort;
	public String getMyIp() {
		return myIp;
	}
	public void setMyIp(String myIp) {
		this.myIp = myIp;
	}
	public int getMyPort() {
		return myPort;
	}
	public void setMyPort(int myPort) {
		this.myPort = myPort;
	}
	
}

 第四步:自定义MyRedisAutoConfiguration,这个类完成组装bean的功能。

@Configuration
/*
 * 当classpath中出现了Jedis这个类时,才会进行相应的配置。
 * conditional 是有条件的 意思
 */
@ConditionalOnClass({ Jedis.class })
/*
 * @ConfigurationProperties注解主要用来把properties配置文件转化为bean来使用的,
 * 而@EnableConfigurationProperties注解的作用是@ConfigurationProperties注解生效。
 * 如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的。
 */
@EnableConfigurationProperties(MyRedisProperties.class)
public class MyRedisAutoConfiguration {

	@Autowired
	private MyRedisProperties properties;

	@Bean
	public Jedis myRedis() {
		Jedis jedis = new Jedis(properties.getMyIp(), properties.getMyPort());
		return  jedis;
	}
	

}

第五步:至此,我们以开发一个简单的自定义的start.下面执行install命令进行打包。mvn install

 检测是否能够成功应用在springboot中 

 在一个能正常运行的springboot项目中,pom.xml中添加依赖

   
      com.jin
      lijin-springboot-start-redis
      0.0.1-SNAPSHOT
    

在application.properties文件中写入:

lijin.myIp=localhost
lijin.myPort=6379

注意这是我们自定义的前缀的配置项,除了我们自定的模块外,其他模块是不认识的。测试类如下:

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

	//注入jedis
	@Autowired
	Jedis jedis;




	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@Override
	public void run(String... args) throws Exception {
		System.out.println(jedis.getClient().getHost());
		System.out.println(jedis.getClient().getPort());
	}
}

 能输出结果,说明自动配置成功。

 

你可能感兴趣的:(java基础,spring)