Spring框架官网学习内容(不太好找)
Core Technologies
小知识点:
一、required
1、@Autowired(required = false)
说明对象可以为null,否则不可以为空。默认required=true。
理解:当required=false时,该属性在spring中可以为没有注册的状态,且打印该属性为null。
如果required=true时,该属性在spring中不可以为没有注册的状态,运行时报错。
具体测试代码:
测试方案,Cat类,TestDao类中包含Car类,Test类执行
1、required=true的情况
Cat类
package com.qian.pojo;
public class Cat {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
'}';
}
}
TestDao类
package com.qian.dao;
import com.qian.pojo.Cat;
import org.springframework.beans.factory.annotation.Autowired;
public class testDao {
@Autowired //默认即为required=true
private Cat cat;
public Cat getCat() {
return cat;
}
}
测试类
package com.qian.service;
import com.qian.dao.testDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ServiceTest {
public static void main(String[] args){
//获取ApplicationContext,拿到Spring的容器,通过配置文件获取
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
//容器在手,天下我有,需要什么,就直接get什么
testDao testDao = context.getBean("testDao", testDao.class);
System.out.println(testDao.getCat());
}
}
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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<bean name="testDao" class="com.qian.dao.testDao" >
</bean>
</beans>
测试结果报错
2、required=false的情况
TestDao变化外,其余不变
package com.qian.dao;
import com.qian.pojo.Cat;
import org.springframework.beans.factory.annotation.Autowired;
public class testDao {
@Autowired(required = false)
private Cat cat;
public Cat getCat() {
return cat;
}
}
演示结果: