spring自定义标签,功能与@required一样

第一步:新建项目 SecondSpring

项目结构如下:

第二步:导入spring相对应的jar包

过程略...

第三步:创建@Mandatory 接口

package com.xuzhiwen.spring92;

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

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Mandatory {
    
}

第四步:新建House类

package com.xuzhiwen.spring92;

public class House {
    
    private String name;
    private String address;
    
    @Mandatory
    public void setName(String name) {
        this.name = name;
    }
    
    @Mandatory
    public void setAddress(String address) {
        this.address = address;
    }
    
    @Override
    public String toString() {
        return "House [name=" + name + ", address=" + address + "]";
    }
}

第五步:新建spring配置文件

common.xml

<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
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <import resource="xmlfolder/app1.xml" />
    <import resource="xmlfolder/innerbean.xml" />
    <import resource="xmlfolder/singleton.xml" />
    <import resource="xmlfolder/annotation.xml" />
    <import resource="xmlfolder/gather.xml" />
    <import resource="xmlfolder/date.xml" />
    <import resource="xmlfolder/db.xml" />
    <import resource="xmlfolder/parent.xml" />
    <import resource="xmlFile/abstract.xml" />
    <import resource="xmlFile/cat.xml" />
    <import resource="xmlFile/required.xml" />
    
    <import resource="xmlFile/mandatory.xml" />
</beans>    

mandatory.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
    
    <!-- 将@Mandatory注释到"RequiredAnnotationBeanPostProcessor"类中 -->
    <bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor">
        <property name="requiredAnnotationType" value="com.xuzhiwen.spring92.Mandatory"/>
    </bean>    
    
    <bean id="house" class="com.xuzhiwen.spring92.House">
        <property name="name" value="tom" />
        <property name="address" value="china" />
    </bean>
    
</beans>    

第六步:新建测试类

Test.java

package com.xuzhiwen.spring92;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("common.xml");
        House house = (House) app.getBean("house");
        System.out.println(house);
    }
}

第七步:运行结果如下

原文地址:https://www.cnblogs.com/beibidewomen/p/7411916.html