前言
尝试在spring中自定义标签。需求:我需要在spring中添加一个自定义标签cxyxh:blog将属性读取到BeanFactory中,并能通过指定的id获取到Bean。
总结
最终成功的引入了自定的标签 cxyxh:blog。
0 项目结构
软件及版本:
idea:2020.2
gradle: 6.3
spring: 5.2.9.RELEASE
1. 项目准备
1.1 新建gradle项目
在build.gradle文件中引入,阿里云的maven仓库地址和spring-context的依赖。
添加阿里云的依赖:maven { url "https://maven.aliyun.com/repository/public" }
之后下载jar包速度会快一点
本次因为只是测试自定义标签,所以只需要引入spring-context的依赖就行。使用的版本是5.2.9的版本
spring-context依赖又依赖了,spring-bean和spring-core。所以引入spring-context,相当于三个都引入了。
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
maven {
url "https://maven.aliyun.com/repository/public" }
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
// https://mvnrepository.com/artifact/org.springframework/spring-context
compile group: 'org.springframework', name: 'spring-context', version: '5.2.9.RELEASE'
}
1.2 新建spring配置文件
resource/config/spring-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
</beans>
1.3新建启动类
Main.java
package com.cxyxh.custom.tag;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/config/spring-config.xml");
Object personController = applicationContext.getBean("blog");
System.out.println(personController);
}
}
启动类建立完成之后可以尝试启动一下,输出为null。
2. 开始自定义标签
2.1 确定需求
需要支持 <cxyxh:blog id="blog" uri="blog.cxyxh.cn" protocol="https" port="443"/>
标签的解析。