西宁市网站建设官网,温州网站制作软件,广宁网站建设公司,工商局网站怎么做增项Spring p命名空间注入util命名空间注入基于XML的自动装配根据名称自动装配 Spring引入外部属性配置文件 p命名空间注入
作用#xff1a;简化配置。
使用p命名空间注入的前提条件包括两个#xff1a; ● 第一#xff1a;在XML头部信息中添加p命名空间的配置信息#xff1a… Spring p命名空间注入util命名空间注入基于XML的自动装配根据名称自动装配 Spring引入外部属性配置文件 p命名空间注入
作用简化配置。
使用p命名空间注入的前提条件包括两个 ● 第一在XML头部信息中添加p命名空间的配置信息xmlns:p“http://www.springframework.org/schema/p” ● 第二p命名空间注入是基于setter方法的所以需要对应的属性提供setter方法。
Customer.java
package com.w.spring6.bean;public class Customer {private String name;private int age;public void setName(String name) {this.name name;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return Customer{ name name \ , age age };}
}
spring-p.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:phttp://www.springframework.org/schema/pxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean idcustomerBean classcom.w.spring6.bean.Customer p:namezhangsan p:age20//beans测试程序
Test
public void testP(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-p.xml);Customer customerBean applicationContext.getBean(customerBean, Customer.class);System.out.println(customerBean);
}运行结果
util命名空间注入
使用util命名空间可以让配置复用。 使用util命名空间的前提是在spring配置文件头部添加配置信息。如下
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:utilhttp://www.springframework.org/schema/utilxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
MyDataSource1.java
package com.w.spring6.jdbc;import java.util.Properties;public class MyDataSource1 {private Properties properties;public void setProperties(Properties properties) {this.properties properties;}Overridepublic String toString() {return MyDataSource1{ properties properties };}
}
MyDataSource2.java
package com.w.spring6.jdbc;import java.util.Properties;public class MyDataSource2 {private Properties properties;public void setProperties(Properties properties) {this.properties properties;}Overridepublic String toString() {return MyDataSource2{ properties properties };}
}
spring-util.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:utilhttp://www.springframework.org/schema/utilxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsdutil:properties idpropprop keydrivercom.mysql.cj.jdbc.Driver/propprop keyurljdbc:mysql://localhost:3306/spring/propprop keyusernameroot/propprop keypassword123456/prop/util:propertiesbean iddataSource1 classcom.w.spring6.jdbc.MyDataSource1property nameproperties refprop//beanbean iddataSource2 classcom.w.spring6.jdbc.MyDataSource2property nameproperties refprop//bean/beans测试程序:
Test
public void testUtil(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-util.xml);MyDataSource1 dataSource1 applicationContext.getBean(dataSource1, MyDataSource1.class);System.out.println(dataSource1);MyDataSource2 dataSource2 applicationContext.getBean(dataSource2, MyDataSource2.class);System.out.println(dataSource2);
}基于XML的自动装配
Spring还可以完成自动化的注入自动化注入又被称为自动装配。它可以根据名字进行自动装配也可以根据类型进行自动装配。
根据名称自动装配
UserDao.java
package com.w.spring6.dao;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class UserDao {private static final Logger logger LoggerFactory.getLogger(UserDao.class);public void insert(){//System.out.println(数据库正在保存信息);logger.info(数据库正在保存信息);}}VipDao.java
package com.w.spring6.dao;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class VipDao {private static final Logger logger LoggerFactory.getLogger(VipDao.class);public void insert(){logger.info(数据库正在保存vip信息);}
}
UserService.java
package com.w.spring6.service;import com.w.spring6.dao.UserDao;
import com.w.spring6.dao.VipDao;public class UserService {private UserDao userDao;private VipDao vipDao;// public void setAbc(VipDao vipDao){
// this.vipDaovipDao;
// }public void setVipDao(VipDao vipDao){this.vipDaovipDao;}//set注入的话必须提供一个set方法//spring容器会调用这个set方法来给userDao赋值
/* //自己写的不符合javabean规范public void setMySQLUserDao(UserDao xyz){this.userDaoxyz;}*///idea自动生成的符合javabean规范public void setUserDao(UserDao userDao) {this.userDao userDao;}public void saveUser(){userDao.insert();vipDao.insert();}
}
spring-autowire.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean iduserService classcom.w.spring6.service.UserService autowirebyName/bean iduserDao classcom.w.spring6.dao.UserDao/bean idvipDao classcom.w.spring6.dao.VipDao//beans测试程序 Testpublic void testAutowireByName(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-autowire.xml);UserService userService applicationContext.getBean(userService, UserService.class);userService.saveUser();}运行结果
Spring引入外部属性配置文件
在类路径下新建jdbc.properties文件并配置信息
drivercom.mysql.cj.jdbc.Driver
urljdbc:mysql://localhost:3306/spring
usernameroot
password123456在spring配置文件中引入context命名空间配置使用jdbc.properties文件
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
!--
引入外部的properties文件
第一步引入context命名空间
第二步使用标签location属性来指定属性配置文件的路径--context:property-placeholder locationjdbc.properties/bean iddataSource classcom.w.spring6.jdbc.MyDataSourceproperty namedriver value${jdbc.driverClass}/propertyproperty nameurl value${jdbc.url}/propertyproperty nameusername value${jdbc.username}/propertyproperty namepassword value${jdbc.password}/property/bean/beans