前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >31个类手写Spring核心原理之Ioc顶层架构设计

31个类手写Spring核心原理之Ioc顶层架构设计

原创
作者头像
用户8544541
修改2022-01-26 13:30:01
3490
修改2022-01-26 13:30:01
举报
文章被收录于专栏:Python联盟Python联盟

Annotation(自定义配置)模块

Annotation的代码实现我们还是沿用Mini版本的,保持不变,复制过来便可。

1.1 @GPService

代码语言:javascript
复制
package com.tom.spring.formework.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 业务逻辑,注入接口
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GPService {

   String value() default "";
	 
}

1.2 @GPAutowired

@GPAutowired代码如下:

代码语言:javascript
复制
package com.tom.spring.formework.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自动注入
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GPAutowired {

   String value() default "";
	 
}

1.3 @GPController

@GPController代码如下:

代码语言:javascript
复制
package com.tom.spring.formework.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 页面交互
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GPController {

   String value() default "";
	 
}

1.4 @GPRequestMapping

@GPRequestMapping代码如下:

代码语言:javascript
复制
package com.tom.spring.formework.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 请求URL
 */
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GPRequestMapping {

   String value() default "";
	 
}

2 core(顶层接口)模块

2.1 GPFactoryBean

关于顶层接口设计,通过前面的学习我们了解了FactoryBean的基本作用,在此不做过多解释。

代码语言:javascript
复制
package com.tom.spring.formework.core;

public interface GPFactoryBean {

}

2.2 GPBeanFactory

作为所有IoC容器的顶层设计,前面也已经详细介绍了BeanFactory的作用。

代码语言:javascript
复制
package com.tom.spring.formework.core;

/**
 * 单例工厂的顶层设计
 */
public interface GPBeanFactory {

    /**
     * 根据beanName从IoC容器中获得一个实例Bean
     * @param beanName
     * @return
     */
    Object getBean(String beanName) throws Exception;

    public Object getBean(Class<?> beanClass) throws Exception;

}

3 beans(配置封装)模块

BeanDefinition主要用于保存Bean相关的配置信息。

代码语言:javascript
复制
package com.tom.spring.formework.beans.config;

//用来存储配置文件中的信息
//相当于保存在内存中的配置
public class GPBeanDefinition {

    private String beanClassName;  //原生Bean的全类名
    private boolean lazyInit = false; //标记是否延时加载
    private String factoryBeanName;  //保存beanName,在IoC容器中存储的key
		
    public String getBeanClassName() {
        return beanClassName;
    }
		
    public void setBeanClassName(String beanClassName) {
        this.beanClassName = beanClassName;
    }
		
    public boolean isLazyInit() {
        return lazyInit;
    }
		
    public void setLazyInit(boolean lazyInit) {
        this.lazyInit = lazyInit;
    }
		
    public String getFactoryBeanName() {
        return factoryBeanName;
    }
		
    public void setFactoryBeanName(String factoryBeanName) {
        this.factoryBeanName = factoryBeanName;
    }
		
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Annotation(自定义配置)模块
    • 1.1 @GPService
      • 1.2 @GPAutowired
        • 1.3 @GPController
          • 1.4 @GPRequestMapping
          • 2 core(顶层接口)模块
            • 2.1 GPFactoryBean
              • 2.2 GPBeanFactory
              • 3 beans(配置封装)模块
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档