<?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-4.3.xsd">
<context:component-scan base-package="com.jd"></context:component-scan>
</beans>
解释代码
<context:component-scan base-package="com.jd"></context:component-scan>
作用①:扫描com.jd包及其子包下的所有类,并为添加了@Controller、@Service、@Component、@Repository修饰过的类创建对象,然后存入Ioc容器中,调用默认构造方法(一定要有默认的构造方法)
UserInfoDao类:
package com.jd.userinfo.dao;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
@Service
public class UserInfoDao implements IUserInfoDao{
public UserInfoDao() {
System.out.println("构造函数");
}
}
Test类
package com.jd.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jd.userinfo.dao.IUserInfoDao;
import com.jd.userinfo.dao.UserInfoDao;
import com.jd.vo.UserInfo;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
IUserInfoDao userInfo = applicationContext.getBean(IUserInfoDao.class);
System.out.println(userInfo);
}
}
运行结果:
作用②:
四个修饰符@Controller、@Service、@Component、@Repository修饰的类的成员变量有@Autowired修饰,则创建该类的对象是会自动从Ioc容器中获取该成员变量的值并赋值给相应变量。
UserInfoDao类:
package com.jd.userinfo.dao;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
@Service
public class UserInfoDao implements IUserInfoDao{
public UserInfoDao() {
System.out.println("构造函数");
}
@Autowired
private Date date;
public Date t() {
return date;
}
}
Test类:
package com.jd.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jd.userinfo.dao.IUserInfoDao;
import com.jd.userinfo.dao.UserInfoDao;
import com.jd.vo.UserInfo;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
IUserInfoDao userInfo = applicationContext.getBean(IUserInfoDao.class);
System.out.println(userInfo.t());
applicationContext.close();
}
}
运行结果:
2.23