Spring的命名空间
一、总述
二、具体实验
2.1引入自定义命名空间
首先要加入要引入的东西的坐标(也就是pom文件中的依赖,以引入springmvc为例)
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.23</version></dependency>其次是改Spring的配置文件:
刚开始是这样:
<?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:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd“><bean id="userService"class="com.itheima.service.impl.UserServiceImpl2"autowire="byType"></bean><bean id="userDao"class="com.itheima.dao.impl.UserDaoImpl"/></beans>要引入mvc,只需要加三个地方(其实如果是Spring的组件的话都是类似的,可以复制粘贴,然后改不同的即可,不是Spring的组件就得自己去找命名空间及命名空间约束了)
命名空间
xmlns:mvc="http://www.springframework.org/schema/mvc"命名空间、schane地址(jar包命名空间对应的虚拟地址,下面两个必须是成对的):
http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd最后是这样:
<?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:util="http://www.springframework.org/schema/util"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><bean id="userService"class="com.itheima.service.impl.UserServiceImpl2"autowire="byType"></bean><bean id="userDao"class="com.itheima.dao.impl.UserDaoImpl"/></beans>然后就可以引入mvc标签了:
<?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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd<mcv:annotation-driven/><bean id="userService"class="com.itheima.service.impl.UserServiceImpl2"autowire="byType"></bean><bean id="userDao"class="com.itheima.dao.impl.UserDaoImpl"/></beans>2.2标签配置不同的环境
使用方式:
1、在配置文件中使用beans的profile属性来进行声明:
<beans profile="dev"><!--再在环境里面像正常一样配置bean--><beanclass="com.itheima.service.impl.UserServiceImpl2"id="userServiceImpl2"/></beans><!--再配置一个测试环境--><beans profile="test"><beanclass="com.itheima.dao.impl.UserDaoImpl"id="userDao"/></beans>2、使用System.setProperty(“spring.profiles.active”,“环境名来进行调用”),例如:
System.setProperty("spring.profiles.active","test");System.setProperty("spring.profiles.active","dev");测试:
packagecom.itheima.test;importcom.itheima.dao.impl.UserDaoImpl;importcom.itheima.service.UserService;importorg.springframework.beans.factory.support.DefaultListableBeanFactory;importorg.springframework.beans.factory.xml.XmlBeanDefinitionReader;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importjavax.xml.bind.annotation.XmlAccessOrder;publicclassBeanFactoryTest{publicstaticvoidmain(String[]args){System.setProperty("spring.profiles.active","test");// 直接使用ApplicationContex来进行加载ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext_beanfac.xml");System.out.println(applicationContext.getBean("userDao1"));}}使用方式:
1、在子配置文件中定义bean
applicationContextOrder.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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="userService"class="com.itheima.service.impl.UserServiceImpl"></bean></beans>applicationContextUser.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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="userDao"class="com.itheima.dao.impl.UserDaoImpl"></bean></beans>2、在主配置文件中使用标签
<?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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd<importresource="classpath:applicationContextOrder.xml"/><importresource="classpath:applicationContextUser.xml"/></beans>测试及结果:
packagecom.itheima.test;importcom.itheima.dao.impl.UserDaoImpl;importcom.itheima.service.UserService;importorg.springframework.beans.factory.support.DefaultListableBeanFactory;importorg.springframework.beans.factory.xml.XmlBeanDefinitionReader;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importjavax.xml.bind.annotation.XmlAccessOrder;publicclassBeanFactoryTest{publicstaticvoidmain(String[]args){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext_beanfac.xml");System.out.println(applicationContext.getBean("userService"));System.out.println(applicationContext.getBean("userDao"));}}但是使用name属性也可以,只不过 是一个单独的标签而已。
实验:
<beanclass="com.itheima.dao.impl.UserDaoImpl"id="userDao"name="aaa,bbb"/><!--使用alias标签起别名--><alias name="userDao"alias="xxx"/><alias name="userDao"alias="yyy"/>结果: