@Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。
案例代码:
Person.java
package com.baklib.custom;import org.springframework.beans.factory.annotation.Required;public class Person {private String name;private int age;public String getName() {return name;}@Requiredpublic void setName(String name) {this.name = name;}public int getAge() {return age;}@Requiredpublic void setAge(int age) {this.age = age;}}
MainApp.java
package com.baklib.custom;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");Person p = (Person) context.getBean("person");System.out.println("Name : "+p.getName());System.out.println("Age : "+p.getAge());}}
配置文件 Beans.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"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:annotation-config /><bean id="person" class="com.baklib.custom.Person"><property name="name" value="张三"/><property name="age" value="20"/></bean></beans>
基于注释进行配置时,需要增加 beans 的属性 xmlns:context=”http://www.springframework.org/schema/context“
还需要在 xsi:schemaLocation 中添加 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 在 beans 内部添加
编写完以上代码,就可以运行这个程序,运行结束后,可以在控制台看到下面的信息
Name : 张三Age : 20
