自定义cache-spring-boot-starter到私服

1、配置maven仓库配置文件

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    
	<localRepository>D:\JAVA\Maven\Repository</localRepository>
	
	 <!-- 配置nexus的账号信息,自动化部署的时候需要用到 -->
    <servers>
        <server>
            <id>aliuxy-releases</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>aliuxy-snapshots</id>
              <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
	
	  <!-- 使用Mirror配置节可以强制所有包请求都会被转向内网Nexus服务器的地址 -->
	<mirrors>
        <mirror>
            <id>nexus</id>
			<mirrorOf>*</mirrorOf>
            <url>http://10.10.0.20:8081/repository/aliuxy-public/</url>
        </mirror>
    </mirrors>
	
	
	 <!-- 这个默认配置决定了我们的Maven服务器开启snapshot配置,否则不能下载SNAPSHOTS的相关资源 --> 
    <profiles>
        <profile>
            <id>aliuxy</id>
            <repositories>
				<repository>  
					<id>aliuxy-public</id>
					<name>aliuxy-public</name>
					<url>http://10.10.0.20:8081/repository/aliuxy-public/</url>  
					<releases>  
					  <enabled>true</enabled>
					</releases>  
					<snapshots>  
					  <enabled>true</enabled>  
					</snapshots>  
				 </repository>  
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>aliuxy</activeProfile>
    </activeProfiles>
</settings>

2.新建maven项目
目录结构:
在这里插入图片描述

  • resource文件夹下建META-INF文件夹,然后META-INF下建spring.factories文件,SpringBoot在启动时,默认加载并配置classpath下META-INF/spring.factories中的指定的配置类,简单来说,我们只需指定好配置类的类路径,剩下的交给SpringBoot来加载并自动装配。文件内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.aliuxy.starter.CacheAutoConfiguration
  • 配置入口,将所需的所有Bean都配置到spring中:
package com.aliuxy.starter;

import com.aliuxy.starter.configure.RedisAutoConfigure;
import com.aliuxy.starter.redisson.configure.RedissonAutoConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

/**
 * 自动装配入口
 *@author liuxingying
 *@since 2021/8/7
 */
@EnableCaching
@Configuration
@Import({RedisAutoConfigure.class, RedissonAutoConfiguration.class})
public class CacheAutoConfiguration {

    public CacheAutoConfiguration() {
    }

    @Bean
    public KeyGenerator keyGenerator() {
        return (target, method, objects) -> {
            StringBuilder sb = new StringBuilder();
            sb.append(target.getClass().getName());
            sb.append(":");
            sb.append(method.getName());
            Object[] var4 = objects;
            int var5 = objects.length;

            for(int var6 = 0; var6 < var5; ++var6) {
                Object obj = var4[var6];
                if (obj != null) {
                    sb.append(":");
                    sb.append(obj.toString());
                }
            }

            return sb.toString();
        };
    }
}

ps:入口注解有很多,将按需配置,比如类似yml配置来激活是否生效Configuration:

/**
 * 配置类,交给IOC容器
 * @EnableConfigurationProperties:告诉SpringBoot,让使用@ConfigurationProperties 注解的类生效。
 * @ConditionalOnProperty:
 * 注解控制 @Configuration是否生效。
 * 简单来说也就是我们可以通过在yml配置文件中控制 
 * @Configuration 注解的配置类是否生效
 */
@Configuration
@EnableConfigurationProperties(XfProperties.class)
@ConditionalOnProperty(prefix = "xf",value = "enabled", matchIfMissing = true)
public class XfConfig {
        @Autowired
        private XfProperties xfProperties;
        @Bean
        public XfService xfService(){
            return  new XfService(xfProperties.getMsg(),xfProperties.getToWho());
        }
}

3.配置文件pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.aliuxy</groupId>
    <artifactId>cache-spring-boot-starter</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <name>cache-spring-boot-starter</name>

    <description>cache-spring-boot-starter upload nexus</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <dependencies>
        <!--自动配置必须要引的-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>

        <!--properties 提示用的-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

        <!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

        <!-- 分布式锁 -->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.10.5</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>27.0.1-jre</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <!-- 我们是基于Springboot的应用 -->
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.4.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <distributionManagement>
        <repository>
            <id>aliuxy-releases</id>
            <url>http://10.10.0.20:8081/repository/aliuxy-releases/</url>
        </repository>
        <snapshotRepository>
            <id>aliuxy-snapshots</id>
            <url>http://10.10.0.20:8081/repository/aliuxy-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
  <!--打包所需要的配置和插件,以防有资源打包不完整-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <!-- resources资源插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <!-- 后缀为pem、pfx的证书文件 -->
                        <nonFilteredFileExtensions>
                            <nonFilteredFileExtension>pem</nonFilteredFileExtension>
                            <nonFilteredFileExtension>pfx</nonFilteredFileExtension>
                            <nonFilteredFileExtension>p12</nonFilteredFileExtension>
                            <nonFilteredFileExtension>key</nonFilteredFileExtension>
                        </nonFilteredFileExtensions>
                    </configuration>
                </plugin>
                <!-- java文档插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.3.0</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <charset>UTF-8</charset>
                        <docencoding>UTF-8</docencoding>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <additionalJOption>-Xdoclint:none</additionalJOption>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- 配置生成源码包 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.2.1</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- 一键更新子模块版本号 -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.8.1</version>
                    <configuration>
                        <generateBackupPoms>false</generateBackupPoms>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>1.6</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!-- 编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <!-- 资源插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
            </plugin>
            <!-- java文档插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <!-- 配置生成源码包 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <!-- 一键更新子模块版本号 -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <configuration>
                    <generateBackupPoms>false</generateBackupPoms>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

  • 所需内容完善后,就可以deploy打包上传到本地仓库和远程私服nexus上了,其他服务需要就可以直接引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值