springboot 的start
建一个父工程

不需要其他目录结构,需要注意的是把type的类型改为POM 这样就没有工程的目录结构 因为父工程不需要
给父工程的pom添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
这样父工程就完成好了
我们仿造mybatis的起步来写
现在需要对外暴露一个工程依赖 myspringboot-start 以刚创建的工程为父工程
子工程为对外暴露的工程 依赖我们的配置类
<dependencies>
<dependency>
<groupId>com.parentdemo</groupId>
<artifactId>mystart-springboot-configruation</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
注意:这个启动工程 如果需要其他的依赖包 统一的放到这个工程中进行管理
这个依赖的包就是我们接下来需要自定义的配置依赖工程 一个普通的springboot工程

工程如图类似就可以了 不需要application.yml文件
定义一个类接收外部的参数:
package com.nicong.demo;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "spring.demo")
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
@ConfigurationProperties(prefix = "spring.demo") 这个注解简单地说一下
就是从上下文中自动的获取到对应字段的属性映射到当前类中去
并且以属性prefix = "spring.demo" 为开头的属性
接下来 创建一个配置类:
package com.nicong.demo;
import org.springframework.beans.factory.annotation.Autowired;
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
@ConditionalOnProperty(name = "spring.demo.name")
@EnableConfigurationProperties(User.class)
public class HelloConfg {
@Autowired
private User user;
@Bean
public helloController getUser(){
return new helloController(user);
}
}
@Configuration标注为一个配置类会被扫描加载就不多说了
@ConditionalOnProperty(name = "spring.demo.name") 这个就相当于 一个条件判断 容器中存在这样的key就加载 否则就不加载这个配置类,
以@Conditionalxxx的条件判断还有很多这里就不多说了
@EnableConfigurationProperties(User.class)这个可能大家比较陌生的 他的作用说的简单一点就是把带有@ConfigurationProperties注解的类放到springboot容器中
User.class 这个是需要放入的类型 可以写多个
在来个对外访问的类
package com.nicong.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class helloController {
private User user;
public helloController(User user) {
this.user = user;
}
@GetMapping("/")
public String getHello(){
return user.getName()+"欢迎你!";
}
}
User参数会自动的通过有参数的构造方法注入 因为User已经被放入到容器中了 这里就不多说了
这个类就是一个简单的controller类
接下来最重要的一步
在resources下 建包 META-INF 文件 spring.factories
说白了就是springboot启动的时候需要自动加载的类
以
org.springframework.boot.autoconfigure.EnableAutoConfiguration 为KEY
value就是
com.nicong.demo.HelloConfg 访问的相对路劲的类
接下来就是把工程打包放入到maven中 就不多说了
再然后在其他工程中引用start工程的坐标就可以用了
希望对你们有帮助 有问题可以交流 qq359073594
