Spring的命名空间

Spring的命名空间

一、总述

二、具体实验

2.1引入自定义命名空间

首先要加入要引入的东西的坐标(也就是pom文件中的依赖,以引入springmvc为例)

java 复制代码
<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.23</version>
 </dependency>

其次是改Spring的配置文件:

刚开始是这样:

java 复制代码
<?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的组件就得自己去找命名空间及命名空间约束了)

命名空间

java 复制代码
xmlns:mvc="http://www.springframework.org/schema/mvc"

命名空间、schane地址(jar包命名空间对应的虚拟地址,下面两个必须是成对的):

java 复制代码
	   http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd

最后是这样:

java 复制代码
<?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标签了:

java 复制代码
<?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属性来进行声明:

java 复制代码
 <beans profile="dev">
<!--        再在环境里面像正常一样配置bean-->
        <bean class="com.itheima.service.impl.UserServiceImpl2" id="userServiceImpl2"/>
    </beans>
<!--    再配置一个测试环境-->
    <beans profile="test">
        <bean class="com.itheima.dao.impl.UserDaoImpl" id="userDao"/>
    </beans>

2、使用System.setProperty("spring.profiles.active","环境名来进行调用"),例如:

java 复制代码
System.setProperty("spring.profiles.active","test");
java 复制代码
 System.setProperty("spring.profiles.active","dev");

测试:

java 复制代码
package com.itheima.test;

import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.service.UserService;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.xml.bind.annotation.XmlAccessOrder;

public class BeanFactoryTest {
    public static void main(String[] args) {

        System.setProperty("spring.profiles.active","test");
//        直接使用ApplicationContex来进行加载
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext_beanfac.xml");
        System.out.println(applicationContext.getBean("userDao1"));
    }
}

2.3使用标签将子配置文件导入主配置文件中

使用方式:

1、在子配置文件中定义bean

applicationContextOrder.xml:

java 复制代码
<?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:

java 复制代码
<?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、在主配置文件中使用标签

java 复制代码
<?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
	<import resource="classpath:applicationContextOrder.xml"/>
    <import resource="classpath:applicationContextUser.xml"/>
</beans>

测试及结果:

java 复制代码
package com.itheima.test;

import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.service.UserService;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.xml.bind.annotation.XmlAccessOrder;

public class BeanFactoryTest {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new 			                    ClassPathXmlApplicationContext("applicationContext_beanfac.xml");
        System.out.println(applicationContext.getBean("userService"));
        System.out.println(applicationContext.getBean("userDao"));
    }
}

2.4使用标签进行取别名

但是使用name属性也可以,只不过 是一个单独的标签而已。

实验:

java 复制代码
 <bean class="com.itheima.dao.impl.UserDaoImpl" id="userDao" name="aaa,bbb"/>
<!--    使用alias标签起别名-->
    <alias name="userDao" alias="xxx"/>
    <alias name="userDao" alias="yyy"/>

结果:

相关推荐
我是苏苏12 分钟前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
moxiaoran575340 分钟前
Go语言的错误处理
开发语言·后端·golang
编程小风筝1 小时前
Spring 框架如何整合Redis缓存中间件?
redis·spring·缓存
heartbeat..2 小时前
数据库基础知识体系:概念、约束、范式与国产产品
java·数据库·学习笔记·国产数据库
PXM的算法星球2 小时前
【操作系统】哲学家就餐问题实现详解
java
2301_815357702 小时前
Java项目架构从单体架构到微服务架构的发展演变
java·微服务·架构
Ethan-D2 小时前
#每日一题19 回溯 + 全排列思想
java·开发语言·python·算法·leetcode
Echoo华地2 小时前
idea运行程序默认线程为daemon线程的问题
java·ide·intellij-idea
歪楼小能手3 小时前
Android16系统go版关闭重力旋转开关后缺失手动旋转屏幕悬浮按钮
android·java·平板
Coder_Boy_3 小时前
基于SpringAI的在线考试系统-DDD业务领域模块设计思路
java·数据库·人工智能·spring boot·ddd