在使用该标签时,需要额外的 jar 包:spring-aop-4.3.10.RELEASE.jar
主要分为两个方面:
1、扫描包下的全部类,凡是带有@Controller、@Service、@Component、@Repository 修饰的类会自动为其创建对象并存入loC容器中,其中调用的是默认构造方法
2、若是扫描的@Controller、@Service、@Component、@Repository类、其下含有@Autowired的属性会自动赋值(这要求IOC容器中需要本身就有存在该属性的Bean存在)
操作:
UserInfoDao代码:
package club.shaoyu.userinfo.dao;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserInfoDao implements IUserInfoDao {
@Autowired
private Date date;
public void t() {
System.out.println(date);
}
}
此时在Test类中执行以下代码:
package club.shaoyu.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import club.shaoyu.userinfo.dao.IUserInfoDao;
import club.shaoyu.userinfo.dao.UserInfoDao;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("app.xml");
IUserInfoDao userInfo= applicationContext.getBean(UserInfoDao.class);
userInfo.t();
applicationContext.close();
}
}
app.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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
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-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<bean id="date" class="java.util.Date"></bean>
<bean class="java.util.Date"></bean>
<context:component-scan base-package="club.shaoyu"></context:component-scan>
</beans>
(再次强调:此时的IOC容器中已经特殊存在Date对象)
执行结果:在控制台输出
附:使用context标签的方法,在已经安装了spring插件的eclipse中,我们可以直接在xml文件中的namespaces中勾选context标签