SpringBoot--自动加载
来源:互联网 发布:友价源码商城 编辑:程序博客网 时间:2024/06/15 01:58
1 单执行main方法后执行的事情如下:
在org.springframework.boot.autoconfigure.spring.factories中部分配置如下:
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\
从上可知,Redis是自动配置的。
2 Redis配置修改
在RedisAutoConfiguration中:
@Configuration@ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class })//在项目中发现了JedisConnection.class, RedisOperations.class, Jedis.class会初始化redis配置。@EnableConfigurationProperties(RedisProperties.class)public class RedisAutoConfiguration {
通过查阅全局配置文档说明,可配置Redis服务器相关信息:
# REDIS (RedisProperties)spring.redis.cluster.max-redirects= # Maximum number of redirects to follow when executing commands across the cluster.spring.redis.cluster.nodes= # Comma-separated list of "host:port" pairs to bootstrap from.spring.redis.database=0 # Database index used by the connection factory.spring.redis.url= # Connection URL, will override host, port and password (user will be ignored), e.g. redis://user:password@example.com:6379spring.redis.host=localhost # Redis server host.spring.redis.password= # Login password of the redis server.spring.redis.ssl=false # Enable SSL support.spring.redis.pool.max-active=8 # Max number of connections that can be allocated by the pool at a given time. Use a negative value for no limit.spring.redis.pool.max-idle=8 # Max number of "idle" connections in the pool. Use a negative value to indicate an unlimited number of idle connections.spring.redis.pool.max-wait=-1 # Maximum amount of time (in milliseconds) a connection allocation should block before throwing an exception when the pool is exhausted. Use a negative value to block indefinitely.spring.redis.pool.min-idle=0 # Target for the minimum number of idle connections to maintain in the pool. This setting only has an effect if it is positive.spring.redis.port=6379 # Redis server port.spring.redis.sentinel.master= # Name of Redis server.spring.redis.sentinel.nodes= # Comma-separated list of host:port pairs.spring.redis.timeout=0 # Connection timeout in milliseconds.
在src/main/respurces下创建的application.properties文件,
spring.redis.url= 127.0.0.1
当执行SpringApplication初始化时,会自动初始化Redis相关的信息。
@ConfigurationProperties(prefix = "spring.redis")public class RedisProperties { /** * Database index used by the connection factory. */ private int database = 0; /** * Redis url, which will overrule host, port and password if set. */ private String url; /** * Redis server host. */ private String host = "localhost";
如上,将会在application.properties中找spring.redis前缀的配置信息,例如spring.redis.url的值映射到String url中。
部分摘自某智播客。
3 创建一个自定义加载的模块,类似于启动的时候自动加载spring.factory中的内容。
application.properties:
hello.msg=hello
配置文件映射对应的类:
@ConfigurationProperties(prefix="hello")public class HelloProperties { private final String MSG="WORLD"; private String msg=MSG; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }}
被自动创建的服务:
public class HelloService { private String msg; public String sayHello(){ return "hello"+this.msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }}
自动创建中心:
@Configuration@EnableConfigurationProperties(HelloProperties.class)//开启声明注入,将配置文件中的值映射到变量中@ConditionalOnClass(HelloService.class)//判断HelloService在类路径中是否存在,@ConditionalOnProperty(prefix="hello",value="enabled",matchIfMissing=true)public class HelloServiceAutoConfiguration { @Autowired private HelloProperties helloProperties; @Bean @ConditionalOnMissingBean(HelloService.class)//没有的情况下自动创建 public HelloService helloService(){ HelloService helloService=new HelloService(); helloService.setMsg(helloProperties.getMsg()); return helloService; }}
在src/main/resources/下创建META-INF文件夹后在META-INF装中创建spring.factories,
# Auto Configureorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.text.springboot.autoconfigure.hello.HelloServiceAutoConfiguration
Maven clean一下项目后install,在另外一个项目中依赖。启动
<dependencies> <dependency> <groupId>text</groupId> <artifactId>helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>1.5.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.2.RELEASE</version> </dependency> </dependencies>
打开debug模式:
application.properties
debug=true
启动:
@RestController@SpringBootApplicationpublic class TextApplication { @Autowired private HelloService helloService; @RequestMapping("/") public String index(){ return helloService.sayHello(); } public static void main(String[] args) { SpringApplication.run(TextApplication.class, args); }}
执行结果:
在
Positive matches:
中查看到HelloService已自动加载。
访问根目录:
阅读全文
0 0
- SpringBoot--自动加载
- SpringBoot-SpringData-懒加载
- SpringBoot加载静态资源
- 使用SpringBoot加载配置文件
- SpringBoot加载静态资源
- springboot加载静态资源
- SpringBoot加载过程
- springboot加载静态资源
- springboot加载log4j
- SpringBoot-SpringData-懒加载
- springboot启动加载数据
- Springboot加载静态图片
- SpringBoot加载静态资源
- springboot加载mapper.xml
- SpringBoot自动配置原理
- springboot webmvc 自动配置
- AxonFramework,SpringBoot自动配置
- SpringBoot Jenkins自动构建
- Android7.0 PowerManagerService(4) Power按键流程
- java.lang.AssertionError: UNIMPLEMENTED
- source insight 怎么查看当前文件所在路径
- Superset 通过 Presto 连接 HDFS
- 入门训练 Fibonacci数列
- SpringBoot--自动加载
- Java 实现数据结构——树
- MySQL数据类型_数值类型
- Python学习_我该怎么创建类和实例及类和实例的使用
- 梯度下降+牛顿法
- JAVA【递归】
- C++栈
- 你不做自然会有人替你做,你不努力自然有人在努力
- Source Insight中代码块注释及取消注释实现方法