zoukankan      html  css  js  c++  java
  • SpringBoot学习(2)

    自己开发一个spring boot starter的步骤
    1.新建一个项目(全部都基于maven),比如新建一个spring-boot-starter-redis的maven项目

    pom.xml:

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4 
     5     <groupId>com.study.spring-boot</groupId>
     6     <artifactId>spring-boot-starter-redis</artifactId>
     7     <version>1.0.0</version>
     8     <packaging>jar</packaging>
     9 
    10     <name>spring-boot-starter-redis</name>
    11     <url>http://maven.apache.org</url>
    12 
    13     <properties>
    14         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    15     </properties>
    16 
    17     <dependencies>
    18         <dependency>
    19             <groupId>org.springframework.boot</groupId>
    20             <artifactId>spring-boot-starter</artifactId>
    21             <version>1.5.3.RELEASE</version>
    22         </dependency>
    23         <dependency>
    24             <groupId>redis.clients</groupId>
    25             <artifactId>jedis</artifactId>
    26             <version>2.9.0</version>
    27         </dependency>
    28         <dependency>
    29             <groupId>junit</groupId>
    30             <artifactId>junit</artifactId>
    31             <version>3.8.1</version>
    32             <scope>test</scope>
    33         </dependency>
    34     </dependencies>
    35 </project>

    2.需要一个配置类,配置类里面需要装配好需要提供出去的类

    配置类:

     1 package com.study.spring_boot_redis;
     2 
     3 import org.springframework.boot.context.properties.ConfigurationProperties;
     4 
     5 @ConfigurationProperties(prefix="redis")
     6 public class RedisProperties {
     7     private String host;
     8     private Integer port;
     9     public String getHost() {
    10         return host;
    11     }
    12     public void setHost(String host) {
    13         this.host = host;
    14     }
    15     public Integer getPort() {
    16         return port;
    17     }
    18     public void setPort(Integer port) {
    19         this.port = port;
    20     }
    21 }
     1 package com.study.spring_boot_redis;
     2 
     3 
     4 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
     5 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
     6 import org.springframework.boot.context.properties.EnableConfigurationProperties;
     7 import org.springframework.context.annotation.Bean;
     8 import org.springframework.context.annotation.Configuration;
     9 
    10 import redis.clients.jedis.Jedis;
    11 
    12 @Configuration
    13 @ConditionalOnClass(Jedis.class)
    14 @EnableConfigurationProperties(RedisProperties.class)
    15 public class RedisAutoConfiguration {
    16     @Bean
    17     @ConditionalOnMissingBean
    18     public Jedis Jedis(RedisProperties redisProperties) {
    19         return new Jedis(redisProperties.getHost(),redisProperties.getPort());
    20         
    21     }
    22 }

    3.
    (1)使用@Enable,使用@Import导入需要装配的类

    Enable注解:

     1 package com.study.spring_boot_redis;
     2 
     3 import java.lang.annotation.Documented;
     4 import java.lang.annotation.ElementType;
     5 import java.lang.annotation.Retention;
     6 import java.lang.annotation.RetentionPolicy;
     7 import java.lang.annotation.Target;
     8 
     9 import org.springframework.context.annotation.Import;
    10 
    11 @Target(ElementType.TYPE)
    12 @Retention(RetentionPolicy.RUNTIME)
    13 @Documented
    14 @Import(RedisAutoConfiguration.class)
    15 public @interface EnableRedis {
    16     
    17 }

    (2)/META-INF/spring.factories,在org.springframework.boot.autoconfigure.EnableAutoConfiguration配置需要装配的类


    /spring-boot-starter-redis/src/main/resources/META-INF/spring.factories:

    1 org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.study.spring_boot_redis.RedisAutoConfiguration

    真正的项目:springbootstarter(maven项目)

    pom.xml:

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4 
     5     <groupId>com.study.springboot</groupId>
     6     <artifactId>springboot</artifactId>
     7     <version>1.0.0</version>
     8     <packaging>jar</packaging>
     9 
    10     <name>springboot</name>
    11     <url>http://maven.apache.org</url>
    12 
    13     <properties>
    14         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    15     </properties>
    16 
    17     <dependencyManagement>
    18         <dependencies>
    19             <dependency>
    20                 <groupId>org.springframework.boot</groupId>
    21                 <artifactId>spring-boot-dependencies</artifactId>
    22                 <version>1.5.3.RELEASE</version>
    23                 <scope>import</scope>
    24                 <type>pom</type>
    25             </dependency>
    26         </dependencies>
    27     </dependencyManagement>
    28 
    29     <dependencies>
    30         <dependency>
    31             <groupId>com.study.spring-boot</groupId>
    32             <artifactId>spring-boot-starter-redis</artifactId>
    33             <version>1.0.0</version>
    34         </dependency>
    35         <dependency>
    36             <groupId>junit</groupId>
    37             <artifactId>junit</artifactId>
    38             <scope>test</scope>
    39         </dependency>
    40     </dependencies>
    41 </project>

    /springbootstarter/src/main/resources/application.properties:

    1 redis.host=127.0.0.1
    2 redis.port=6379
     1 //@EnableRedis
     2 @SpringBootApplication
     3 public class App {
     4 
     5     public static void main(String[] args) {
     6         ConfigurableApplicationContext context = SpringApplication.run(App.class,args);
     7         Jedis jedis = context.getBean(Jedis.class);
     8         jedis.set("id", "root123");
     9         System.out.println(jedis.get("id"));
    10         context.close();
    11     }
    12 
    13 }
  • 相关阅读:
    基于jQuery的上下无缝滚动应用(单行或多行)
    表单验证
    中国剩余定理 ( 的学习 )
    扩展欧几里德算法--学习笔记
    Vijos P1794 文化之旅
    1336 : Matrix Sum (hihocoder)
    nyoj 1030 hihocoder 1338
    多重邻接表
    图的存储 ( 十字链表 )
    01背包的变形
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/6900817.html
Copyright © 2011-2022 走看看