spring boot--creating your own auto-configuration
来源:互联网 发布:淘宝里一键修复有用吗 编辑:程序博客网 时间:2024/05/16 10:30
本篇主要讲述spring boot自动配置的部分功能,也算是为自己抛砖引玉,逐步的去理解博大精深的spring,更多自动配置细节请参考官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html#boot-features-custom-starter
看看大神的博客:http://www.jianshu.com/p/ddb6e32e3faf
http://blog.csdn.net/liaokailin/article/details/49559951
下面开始实践吧:
一、制作你需要auto configuration的jar包:
bookstore-common:├── pom.xml└── src ├── main │ ├── java │ │ └── com │ │ └── jiaobuchong │ │ └── common │ │ ├── config │ │ │ ├── MyConfiguration.java │ │ │ └── MyDatabaseConfig.java │ └── resources │ └── META-INF │ └── spring.factories └── test
MyDatabaseConfig.java:
package com.jiaobuchong.common.config;public class MyDatabaseConfig { private String databaseName; public MyDatabaseConfig(String databaseName) { this.databaseName = databaseName; } public void testConfig() { System.out.println(databaseName); System.out.println("spring boot--creating your own auto-configuration"); }}
MyConfiguration.java:
package com.jiaobuchong.common.config;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class MyConfiguration { @Bean @ConditionalOnProperty("com.jiaobuchong.myConfig.enabled") @ConditionalOnMissingBean(MyDatabaseConfig.class) public MyDatabaseConfig myDatabaseConfig(@Value("${com.jiaobuchong.databaseName}") String databaseName) { return new MyDatabaseConfig(databaseName); }}
@Bean是表示注册为spring ApplicationContext中的bean,@ConditionalOnProperty:allows configuration to be included based on a Spring Environment property. Use the prefix and name attributes to specify the property that should be checked. By default any property that exists and is not equal to false will be matched.(来自官方手册)意思就是通过检查特定的属性去进行自动配置。@ConditionalOnMissingBean:表示这个类在classpath路径下找 不到才会去auto-config对应的类型,生成对应类型的bean。@Value: 将配置文件中的内容注入到对应的变量中
spring.factories:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.jiaobuchong.common.config.MyConfiguration
Spring Boot checks for the presence of a META-INF/spring.factories file within your published jar. The file should list your configuration classes under the EnableAutoConfiguration key.(来自官方手册)现在使用mvn clean install 到本地仓库中
二、引入刚才创建的jar包
现在新开一个maven项目,引入刚才创建的jar包:
<dependency> <groupId>com.jiaobuchong</groupId> <artifactId>bookstore-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
项目配置文件,application.yml:
com: jiaobuchong: myConfig: enabled: true databaseName: jiaobuchong
写一个HelloController.java测试一下:
package com.jiaobuchong.springboot.controller;import com.jiaobuchong.common.config.MyDatabaseConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RequestMapping("/test")@RestControllerpublic class HelloController1 { @Autowired private MyDatabaseConfig myDatabaseConfig; @RequestMapping("/autoconfig") public String testAutoConfig() { myDatabaseConfig.testConfig(); return "autoconfig ok!"; }}
运行Application的main()方法:
@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication app = new SpringApplication(Application.class); app.run(args); }}
访问:http://localhost:8080/test/autoconfig,在console中运行结果:
jiaobuchongspring boot--creating your own auto-configuration
That's ok, your own auto-configuration is ok。说明我们将自定义的jar包导到classpath中,spring boot可以自动配置了,通过@Value标注的变量也将相应的配置值注入到对应的变量中去了, so nice。再来看看其中的小细节,如果将
com: jiaobuchong: myConfig: enabled: false
这个设置为false,那 MyDatabaseConfig 这个类就不会通过自动配置注册为spring上下文中的bean了,故 @ConditionalOnProperty 这个注解的意义大伙应该心知肚明了吧。
1 0
- spring boot--creating your own auto-configuration
- Creating Your Own Procedures
- Creating Your Own Validation
- Spring Boot之No session repository could be auto-configured, check your configuration问题解决
- Spring Boot之No session repository could be auto-configured, check your configuration问题解决
- 理解Spring Boot中的auto-configuration
- Creating your own JavaScript Library
- Creating Your Own Java Annotations
- Creating Your Own Widgets using SWT
- Creating your own SAP Customized Main Menu
- Creating Your Own Rails API Documentation
- Add your own board to Nuttx configuration
- How to develop your own Boot Loader
- Spring Boot No auto configuration classes found in META-INF/spring.factories
- Spring Boot自动配置(Auto-Configuration),@EnableAutoConfiguration,Spring Beans和依赖注入
- Reporting Crashes in IMVU: Creating Your Very Own Symbol Server
- Creating your own ODS Style Template for PDF Output
- Creating and Using Your Own Delegates in Objective-C
- 命名标准
- 多媒体定时器 C的实现
- 通过年月求每月天数
- bitmap分别设置四角,圆角还是直角,自定义
- 建立TCP连接(三次握手)
- spring boot--creating your own auto-configuration
- JAVA_NEW和赋值的区别
- uploadify.v2.1.4 使用示例
- LeetCode5. Longest Palindromic Substring
- 设计模式:观察者模式(基于 Java)
- 《第一行代码》ChoosePicTest例子从相册读取照片显示失败
- 路由设置vpn透传
- Linux环境下网络编程杂谈
- JavaScript异步编程的Promise模式