做a视频网站,网页设计师考证多少钱,抖音分销系统开发,做一手房用什么网站目录 1.配置项目
1.1配置pom.xml
1.2Spring常用功能的Jar包依赖关系
1.3简单代码
2.IOC
2.1.applicationContext.xml
2.2.测试
3.DI
3.1概述
3.2.构造函数注入
3.3set方法注入
3.4自动注入
3.5注入集合类型的属性 1.配置项目
1.1配置pom.xml
?xml version?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.by/groupIdartifactIdSpring_IOC_Xml/artifactIdversion1.0-SNAPSHOT/versionproperties!-- 项目源码及编译输出的编码 --project.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncoding!-- 项目编译JDK版本 --maven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!-- Spring常用依赖 --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.1.8.RELEASE/version/dependency/dependencies
/project
注意Jar包彼此存在依赖只需引入最外层Jar即可由Maven自动将相关依赖Jar引入到项目中。
1.2Spring常用功能的Jar包依赖关系 核心容器由 beans、core、context 和 expressionSpring Expression LanguageSpEL4个模块组成。 spring-beans和spring-core模块是Spring框架的核心模块包含了控制反转Inversion of ControlIOC和依赖注入Dependency InjectionDI。BeanFactory使用控制反转对应用程序的配置和依赖性规范与实际的应用程序代码进行了分离。BeanFactory属于延时加载也就是说在实例化容器对象后并不会自动实例化Bean只有当Bean被使用时BeanFactory才会对该 Bean 进行实例化与依赖关系的装配。 spring-context模块构架于核心模块之上扩展了BeanFactory为它添加了Bean生命周期控制、框架事件体系及资源加载透明化等功能。此外该模块还提供了许多企业级支持如邮件访问、远程访问、任务调度等ApplicationContext 是该模块的核心接口它的超类是 BeanFactory。与BeanFactory不同ApplicationContext实例化后会自动对所有的单实例Bean进行实例化与依赖关系的装配使之处于待用状态。 spring-expression 模块是统一表达式语言EL的扩展模块可以查询、管理运行中的对象同时也可以方便地调用对象方法以及操作数组、集合等。它的语法类似于传统EL但提供了额外的功能最出色的要数函数调用和简单字符串的模板函数。EL的特性是基于Spring产品的需求而设计的可以非常方便地同Spring IoC进行交互。
1.3简单代码
dao层
/*** 持久层实现类*/
public class UserDaoImpl implements UserDao {Overridepublic void addUser(){System.out.println(insert into tb_user......);}
}
service层
/*** 业务层实现类*/
public class UserServiceImpl implements UserService {//此处有依赖关系private UserDao userDao new UserDaoImpl();public void addUser(){userDao.addUser();}
}
2.IOC 2.1.applicationContext.xml
?xml version1.0 encodingUTF-8?
!--1、注意要导入schema约束--
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.xsd!--2、把对象交给spring来创建id给对象在容器中提供一个唯一标识。用于获取对象 class指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造函数--bean iduserDao classcom.by.dao.UserDaoImpl/beanbean iduserService classcom.by.service.UserServiceImpl/bean
/beans
注意命名无限制约定俗成命名有spring-context.xml、applicationContext.xml、beans.xml
2.2.测试
/*** 模拟表现层*/
public class Client {public static void main(String[] args) {//1.使用ApplicationContext接口就是在获取spring容器ApplicationContext ac new ClassPathXmlApplicationContext(applicationContext.xml);//2.根据bean的id获取对象UserDao userDao (UserDao) ac.getBean(userDao);System.out.println(userDao);UserService userService (UserService) ac.getBean(userService);System.out.println(userService);userService.addUser();}
} 问题service层仍然耦合
3.DI
3.1概述
DIDependency Injection依赖注入在Spring创建对象的同时为其属性赋值称之为依赖注入。
3.2.构造函数注入
顾名思义就是使用类中的构造函数给成员变量赋值。注意赋值的操作不是我们自己做的而是通过配置的方式让spring框架来为我们注入。具体代码如下
/*** 业务层实现类*/
public class UserServiceImpl implements UserService {private UserDao userDao;private String name;private Integer age;public UserServiceImpl(UserDao userDao, String name, Integer age) {this.userDao userDao;this.name name;this.age age;}public void addUser(){System.out.println(name,age);userDao.addUser();}
}
?xml version1.0 encodingUTF-8?
!--1、注意要导入schema约束--
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.xsd!--2、把对象交给spring来创建--bean iduserDao classcom.by.dao.UserDaoImpl/beanbean iduserService classcom.by.service.UserServiceImpl!--要求类中需要提供一个对应参数列表的构造函数。标签constructor-arg给谁赋值:index:指定参数在构造函数参数列表的索引位置name:指定参数在构造函数中的名称赋什么值:value:它能赋的值是基本数据类型和String类型ref:它能赋的值是其他bean类型也就是说必须得是在配置文件中配置过的bean--constructor-arg nameuserDao refuserDao/constructor-argconstructor-arg namename value张三/constructor-argconstructor-arg nameage value18/constructor-arg/bean
/beans
3.3set方法注入
顾名思义就是在类中提供需要注入成员的set方法。具体代码如下
/*** 业务层实现类*/
public class UserServiceImpl implements UserService {private UserDao userDao;private String name;private Integer age;public void setUserDao(UserDao userDao) {this.userDao userDao;}public void setName(String name) {this.name name;}public void setAge(Integer age) {this.age age;}public void addUser(){System.out.println(name,age);userDao.addUser();}
} ?xml version1.0 encodingUTF-8?
!--1、注意要导入schema约束--
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.xsd!--2、把对象交给spring来创建--bean iduserDao classcom.by.dao.UserDaoImpl/beanbean iduserService classcom.by.service.UserServiceImpl!--要求property标签constructor-arg给谁赋值:name:找的是类中set方法后面的部分赋什么值:value:它能赋的值是基本数据类型和String类型ref:它能赋的值是其他bean类型也就是说必须得是在配置文件中配置过的bean--property nameuserDao refuserDao/propertyproperty namename value张三/propertyproperty nameage value18/property/bean
/beans
3.4自动注入
不用在配置中 指定为哪个属性赋值由spring自动根据某个 原则 在工厂中查找一个bean并为属性注入值。具体代码如下
/*** 业务层实现类*/
public class UserServiceImpl implements UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao userDao;}public void addUser(){userDao.addUser();}
}
?xml version1.0 encodingUTF-8?
!--1、注意要导入schema约束--
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.xsd!--2、把对象交给spring来创建--bean iduserDao classcom.by.dao.UserDaoImpl/bean!--autowirebyType按照类型自动注入值--bean iduserService classcom.by.service.UserServiceImpl autowirebyType/bean
/beans
?xml version1.0 encodingUTF-8?
!--1、注意要导入schema约束--
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.xsd!--2、把对象交给spring来创建--bean iduserDao classcom.by.dao.UserDaoImpl/bean!--autowirebyType按照类型自动注入值--bean iduserService classcom.by.service.UserServiceImpl autowirebyName/bean
/beans
3.5注入集合类型的属性
顾名思义就是给类中的集合成员传值它用的也是set方法注入的方式只不过变量的数据类型都是集合。我们这里介绍注入数组List,Set,Map。具体代码如下
/*** 业务层实现类*/
public class UserServiceImpl implements UserService {private UserDao userDao;private String[] myStrs;private ListString myList;private SetString mySet;private MapString,String myMap;public void setUserDao(UserDao userDao) {this.userDao userDao;}public void setMyStrs(String[] myStrs) {this.myStrs myStrs;}public void setMyList(ListString myList) {this.myList myList;}public void setMySet(SetString mySet) {this.mySet mySet;}public void setMyMap(MapString, String myMap) {this.myMap myMap;}public void addUser(){System.out.println(Arrays.toString(myStrs));System.out.println(myList);System.out.println(mySet);System.out.println(myMap);userDao.addUser();}
}
?xml version1.0 encodingUTF-8?
!--1、注意要导入schema约束--
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.xsd!--2、把对象交给spring来创建--bean iduserDao classcom.by.dao.UserDaoImpl/beanbean iduserService classcom.by.service.UserServiceImpl!--要求property标签constructor-arg给谁赋值:name:找的是类中set方法后面的部分赋什么值:value:它能赋的值是基本数据类型和String类型ref:它能赋的值是其他bean类型也就是说必须得是在配置文件中配置过的bean--property nameuserDao refuserDao/property!-- 给mySet集合注入数据 --property namemySetsetvalueAAA/valuevalueBBB/valuevalueCCC/value/set/property!-- 注入array数组数据 --property namemyArrayarrayvalueAAA/valuevalueBBB/valuevalueCCC/value/array/property!-- 注入list集合数据 --property namemyListlistvalueAAA/valuevalueBBB/valuevalueCCC/value/list/property!-- 注入Map数据 --property namemyMapmapentry keytestA valueaaa/entryentry keytestB valuebbb/entry/map/property/bean
/beans