• spring源码构建


    版本

      IDEA  2018.5

      Gradle  5.6.3

      Spring  5.1.xxx

    步骤参考:

      https://www.yuque.com/docs/share/a0ebb22b-1dbc-4ad1-b1f7-7999419d27a3?#

    1、下载gradle,Spring 源码

    链接:https://pan.baidu.com/s/1hIHb8Y_Ixlr_vqF7LF1J0Q
    提取码:gyfi 

    2、解压配置环境变量

    3、配置gradle全局国内仓库

    (跟第五条有关联可先不配置)

    找到本地gradle仓库地址,一般为 .gradle文件夹。然后在里面添加init.gradle文件,文件内容如下

    allprojects{
        repositories {
            def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
            def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
            all { ArtifactRepository repo ->
                if(repo instanceof MavenArtifactRepository){
                    def url = repo.url.toString()
                    if (url.startsWith('https://repo1.maven.org/maven2')) {
                        project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
                        remove repo
                    }
                    if (url.startsWith('https://jcenter.bintray.com/')) {
                        project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
                        remove repo
                    }
                }
            }
            maven {
                    url ALIYUN_REPOSITORY_URL
                url ALIYUN_JCENTER_URL
            }
        }
    }

    4、导入项目

    没有导入import project,

      方法1、File  >>  close project

      

      方法2、Settings > Appearance & Bechavior > Menus and Toolbars.

    打开Main menu > File > 选中File 下边任意一个, 点击 右侧按钮 Add After
    这里会弹出一个界面让你选择添加的功能

    Import Project 选项在Other目录下, 找到import Project ,点击OK保存设置即可 

     

     开始导入

     5、修改spring源码部分中的gradle配置

    首先找到源码中 spring-framework-5.1.xspring-framework-5.1.xgradlewrapper  文件夹,修改gradle-wrapper.properties中的属性   该处主要是为了防止再次下载其他的版本gradle

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    distributionUrl=file:///C:Program Files/Java/gradle-5.6.3-all.zip 
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists

     repositories {
             maven { url "https://maven.aliyun.com/repository/spring-plugin" }
             maven{ url "https://maven.aliyun.com/nexus/content/repositories/spring-plugin"}
             maven { url "https://repo.spring.io/plugins-release" }
            maven { url "https://repo.spring.io/plugins-release" }
        }
     repositories {
        maven { url "https://maven.aliyun.com/repository/central" }
            maven { url "https://repo.spring.io/libs-release" }
            mavenLocal()
        }

    6、编译顺序为:core-oxm-context-beans-aspects-aop

    ⼯程>tasks>compileTestJava

     7、测试

    新建model

     

     

     添加依赖(修改红色区域)指定jdk版本号,依赖 spring-context

     

     

     编写测试

    public class IocTest {
        @Test
        public void testIoC() {
            ApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
            LagouBean lagouBean = classPathXmlApplicationContext.getBean(LagouBean.class);
            System.out.println(lagouBean);
        }
    }

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop
            https://www.springframework.org/schema/aop/spring-aop.xsd
    ">
    
        <!--循环依赖问题-->
        <bean id="lagouBean" class="com.lagou.edu.LagouBean">
            <property name="ItBean" ref="itBean"/>
        </bean>
        <bean id="itBean" class="com.lagou.edu.ItBean">
            <property name="LagouBean" ref="lagouBean"/>
        </bean>
    
    
        <!--<bean id="myBeanFactoryPostProcessor" class="com.lagou.edu.MyBeanFactoryPostProcessor"/>
        <bean id="myBeanPostProcessor" class="com.lagou.edu.MyBeanPostProcessor"/>-->
    
    
        <!--<bean id="lagouBean" class="com.lagou.edu.LagouBean">
        </bean>-->
    
    
        <!--aop配置-->
        <!--横切逻辑-->
        <!--<bean id="logUtils" class="com.lagou.edu.LogUtils">
        </bean>
    
        <aop:config>
            <aop:aspect ref="logUtils">
                <aop:before method="beforeMethod" pointcut="execution(public void com.lagou.edu.LagouBean.print())"/>
            </aop:aspect>
        </aop:config>-->
    
    
    </beans>
    创建 LagouBean 
    public class LagouBean implements InitializingBean, ApplicationContextAware {
    
        private ItBean itBean;
    
        public void setItBean(ItBean itBean) {
            this.itBean = itBean;
        }
    
        /**
         * 构造函数
         */
        public LagouBean(){
            System.out.println("LagouBean 构造器...");
        }
    
    
        /**
         * InitializingBean 接口实现
         */
        public void afterPropertiesSet() throws Exception {
            System.out.println("LagouBean afterPropertiesSet...");
        }
    
        public void print() {
            System.out.println("print方法业务逻辑执行");
        }
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            System.out.println("setApplicationContext....");
        }
    }

    到这,说明 Spring源码构建成功

  • 相关阅读:
    spring配置初始化出错
    Java常用工具类(计算MD5,验证码随机生成,天数差值计算)
    Java基础(静态static)
    websocket使用nginx代理后连接频繁打开和关闭
    关于kafka客户端版本与服务端版本不一致导致的一次坑
    kafka
    maven常用命令含义
    pg数据库org.postgresql.util.PSQLException: ERROR: "xxx" is not a sequence
    @Param注解和@Mapper注解
    springmvc对参数接收的两个注解@RequestParam和@RequestBody
  • 原文地址:https://www.cnblogs.com/denghy-301/p/14552340.html
Copyright © 2020-2023  润新知