SpringBoot学习笔记-8:第八章 Spring Boot 自定义 starters

网友投稿 679 2022-05-30

第八章 Spring Boot 自定义 starters

自动配置类

@Configuration // 指定这个类是配置类 @Conditionalxxx // 指定条件成立的情况下自动配置类生效 @AutoConfigureAfter // 指定自动配置类的顺序 @Bean // 给容器中添加组件 @ConfigurationProperties // 结合相关Properties类来绑定相关的配置 @EnableConfigurationProperties // 让Properties生效加入到容器中

1

2

3

4

5

6

7

启动器 Starter

启动器模块是一个空的 JAR 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库

命名规约:

推荐使用一下命名规约

官方命名空间:

前缀:spring-boot-starter-

模式:spring-boot-starter-模块名

举例:spring-boot-starter-web、spring-boot-starter-jdbc

自定义命名空间:

前缀:-spring-boot-starter

模式:模块名-spring-boot-starter

举例:mybatis-spring-boot-starter

自定义 starter

1、Idea 创建空工程 Empty Project

2、新建 spring 自动配置模块

pom.xml

4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.1.RELEASE com.mouday mouday-spring-boot-starter-autoconfigurer 0.0.1-SNAPSHOT mouday-spring-boot-starter-autoconfigurer Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

SpringBoot学习笔记-8:第八章 Spring Boot 自定义 starters

21

22

23

24

25

26

27

28

29

30

31

属性文件 HelloProperties.java

package com.mouday.starter; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "mouday.hello") public class HelloProperties { private String prefix; private String suffix; public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } public String getSuffix() { return suffix; } public void setSuffix(String suffix) { this.suffix = suffix; } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

HelloService.java

package com.mouday.starter; public class HelloService { HelloProperties properties; public String sayHello(String name){ return properties.getPrefix() + name + properties.getSuffix(); } public HelloProperties getProperties() { return properties; } public void setProperties(HelloProperties properties) { this.properties = properties; } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

配置类

package com.mouday.starter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @ConditionalOnWebApplication // web应用才生效 @EnableConfigurationProperties(HelloProperties.class) public class HelloServiceAutoConfiguration { @Autowired HelloProperties helloProperties; @Bean public HelloService helloService(){ HelloService service = new HelloService(); service.setProperties(helloProperties); return service; } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

src/main/resources/META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.mouday.starter.HelloServiceAutoConfiguration

1

2

3

3、新建 maven starter 模块

pom.xml

4.0.0 com.mouday mouday-spring-boot-starter 1.0-SNAPSHOT com.mouday mouday-spring-boot-starter-autoconfigurer 0.0.1-SNAPSHOT

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

测试

引入依赖 pom.xml

com.mouday mouday-spring-boot-starter 0.0.1-SNAPSHOT

1

2

3

4

5

修改配置文件 application.properties

mouday.hello.prefix=hello mouday.hello.suffix=hi

1

2

新建测试 controller

package com.example.demo.controller; import com.mouday.starter.HelloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { @Autowired HelloService helloService; @GetMapping("/hello") @ResponseBody public String hello(String name){ return helloService.sayHello(name); } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

http://localhost:8080/hello?name=Tom

访问结果

helloTomhi

1

学习新技术:

一看文档,二看源码

Spring Spring Boot

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Tensorflow |(5)模型保存与恢复、自定义命令行参数
下一篇:Python进阶(四十九)-初识Flask Blueprint
相关文章