详述Spring XML文件配置——component标签的作用

一、component标签的特点:

扫描com.jd包及其子包下的所有类,并未添加了@Controller@Service@Component@Repository修饰的类创建对象并存入

容器,调用的是默认无参构造方法。

二、用代码验证component标签的特点

编写一个UserInfoDao类,和一个Test类:

import org.springframework.stereotype.Service;

@Service//加@Service注释
public class UserInfoDao implements IUserInfoDao {
	
	public UserInfoDao(){
		System.out.println("无参构造方法");
	}
}
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.jd.vo.Student;
import com.jd.vo.UserInfo;

public class Test {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
		UserInfo userInfo =  applicationContext.getBean(UserInfo.class);
		
	}
}

 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:util="http://www.springframework.org/schema/util"
	xmlns:p="http://www.springframework.org/schema/p"
	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">
	
	<!-- 
		@controller@service@component@repository修饰的类的成员变量有@Autowired修饰,则自动给该属性赋值(前提是在ioc容器中有配置)
	 -->
	<context:component-scan base-package="com.jd"></context:component-scan>	
</beans>

运行结果如下: 

 若UserInfoDao类中只有有参构造方法,则报错。

修改UserInfoDao类:

import org.springframework.stereotype.Service;

@Service
public class UserInfoDao implements IUserInfoDao {
	
	public UserInfoDao(String param){
		System.out.println("有参构造方法");
	}
}

特别注意这里:

另外:

当@Controller@Service@Component@Repository修饰的类的成员变量有@Autowired修饰,则自动给该属性赋值(前提是

在ioc容器中有配置)

对UserInfoDao类,Test类,XML文件均作修改:

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserInfoDao implements IUserInfoDao {
	
	@Autowired
	public Date date;
	
	public UserInfoDao(){
		
	}
}

       

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.jd.userInfo.dao.UserInfoDao;

public class Test {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
		UserInfoDao userInfoDao =  applicationContext.getBean(UserInfoDao.class);
		System.out.println(userInfoDao.date);
		
	}
}
<?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:util="http://www.springframework.org/schema/util"
	xmlns:p="http://www.springframework.org/schema/p"
	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-->

	<context:component-scan base-package="com.jd"></context:component-scan>
	
</beans>

运行Test类,观察结果:

得以验证。

 

发布了91 篇原创文章 · 获赞 10 · 访问量 8013

猜你喜欢

转载自blog.csdn.net/Liuxiaoyang1999/article/details/104533880