作者:缘zhi韵_297 | 来源:互联网 | 2023-09-24 17:23
我们知道一个
就代表一个对象,如果想创建多个对象,就要使用多个
,所以这里有个简便的方法:
< context: component-scan base-package &#61; " com.jd" > context: component-scan>
意思是 Spring IOC容器扫描com.jd下所有子包内的Java类&#xff0c;如果该类被&#64;Controller(用于控制层&#xff0c;例如servlet)、&#64;Service(用于service层)、&#64;Repository&#xff08;用于DAO层&#xff09;、&#64;Component(基本注解)修饰&#xff0c;则使用无参构造方法创建对象 &#xff01;
当启动Tomcat时&#xff0c;先执行静态代码块&#xff0c;再执行非静态代码块&#xff0c;然后执行构造方法&#xff0c;最后才创建对象以及执行其他代码。所以&#xff1a;
当执行完上述代码后的结果是&#xff1a; 注意&#xff1a; 使用context:component-scan
标签需要添加spring-aop-4.3.10.RELEASE.jar包
还有另一个注解是&#64;Autowired &#xff1a; 当Spring创建Student对象时&#xff0c;成员变量有&#64;Autowired修饰的&#xff0c;则Spring自动从IoC容器中获取一个该类型的对象并进行赋值
例子&#xff1a; 其中的
执行后会创建Date
对象&#xff0c;但当
执行后也会创建对象&#xff0c;但又不能创建两个Date对象&#xff0c;所以使用&#64;Autowired 后&#xff0c;Spring就会自动从IoC容器中获取一个Date类型的对象并进行赋值。 检验一下&#xff1a; 结果就是&#xff1a; 但是当xml文件里没有
&#xff0c;只有
时&#xff0c;成员变量private Date date;
依旧有&#64;Autowired 修饰&#xff0c;则就会报错&#xff0c;因为IoC容器里没有Date类型的对象。所以需要在&#64;Autowired 后面再加上(required &#61; false)
&#xff0c;即&#64;Autowired(required &#61; false)
&#xff0c;此时就不会报错了&#xff0c;即IoC容器里有时就直接拿过来进行赋值&#xff0c;没有时就自动创建对象