Spring xml基础配置

创建Spring项目

idea新建项目,在构建系统中选择Maven,即可创建项目
在这里插入图片描述
创建完成得到项目结构如下图所示
在这里插入图片描述

添加jar包

点击pom.xml文件,导入如下依赖

<dependencies>
	<!-- spring 核⼼依赖 -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>5.2.6.RELEASE</version>
	</dependency>
</dependencies>

防止导入其它spring依赖版本不相同从而造成项目运行错误,可以采用如下方式同一版本

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>5.2.6.RELEASE</spring.version>
    </properties>
    
    <dependencies>
		<!-- spring 核⼼依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
</dependencies>

创建xml配置文件

在resource目录下新建spring配置文件
在这里插入图片描述

spring管理service和dao

在项目中创建service和dao
在这里插入图片描述

在xml配置文件写入如下内容

<!-- bean标签:⽤于配置让spring创建对象,并且存⼊ioc容器之中
id 属性:对象的唯⼀标识。
class 属性:指定要创建对象的全限定类名
-->
<!-- 配置 service -->
<bean id="UserService" class="com.spring.service.impl.UserServiceImpl"/>
<!-- 配置 dao -->
<bean id="UserDao" class="com.spring.dao.impl.UserDaoImpl"/>

测试

 	@Test
    public void test1(){
        // 1.使⽤ ApplicationContext 接⼝,就是在获取 spring 容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
        // 2.根据 bean 的 id 获取对象
        UserService userService = (UserService) ac.getBean("UserService");
        System.out.println(userService);
        UserDao userDao = (UserDao) ac.getBean("UserDao");
        System.out.println(userDao);
    }

得到运行结果如下,配置成功
在这里插入图片描述

bean标签

作用

用于配置对象让spring来创建的。
默认情况下它调用的是类中的无参构造器。如果没有无参构造器则不能创建成功。

属性

id:给对象在容器中提供唯一标识。用于获取对象。
class:指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造器。
scope:指定对象的作业范围。
singleton:默认值,单例的。
prototype:多例的。
init-method:指定类中初始化方法名称。
destroy-method:指定类中销毁方法名称。

作用范围生命周期

单例对象:scope=“singleton”
一个应用只有一个对象实例。它的作用范围是整个应用。
生命周期:
对象出生:当使用对象时,创建新的对象实例。
对象活着:只要容器在,对象一直活着。
对象死亡:当应用卸载,销毁容器时,对象就销毁。

多例对象:scope=“prototype”
每次访问对象时,都会重新创建新的对象实例。
生命周期:
对象出生:当使用对象时,创建新的对象实例。
对象活着:只要对象在使用,就一直活着。
对象死亡:当对象长时间不用时,被java的垃圾回收器回收。

bean实例化

默认无参构造器

<!-- 在默认情况下:
它会根据默认⽆参构造函数来创建类对象。如果 bean 中没有默认⽆参构造函数,将会创建失败。
-->
<bean id="UserService" class="com.spring.service.impl.UserServiceImpl"/>

静态工厂

/**
* 模拟⼀个静态⼯⼚,创建业务层实现类
*/
public class staticFactory {
    public static UserService createUserService(){
        return new UserServiceImpl();
    }
}
<!-- 此种⽅式是:
使⽤ StaticFactory 类中的静态⽅法 createAccountService 创建对象,并存⼊ spring 容
器
id 属性: 指定 bean 的 id,⽤于从容器中获取
class 属性: 指定静态⼯⼚的全限定类名
factory-method 属性: 指定⽣产对象的静态⽅法
-->
 <bean id="UserService" class="com.spring.factory.staticFactory" factory-method="createUserService"/>

spring实例管理工厂

/**
* 模拟⼀个实例⼯⼚,创建业务层实现类
* 此⼯⼚创建对象,必须现有⼯⼚实例对象,再调⽤⽅法
*/
public class InstanceFactory {
    public UserService createUserService(){
        return new UserServiceImpl();
    }
}
<!-- 此种⽅式是:
先把⼯⼚的创建交给 spring 来管理。
然后在使⽤⼯⼚的 bean 来调⽤⾥⾯的⽅法
factory-bean 属性: ⽤于指定实例⼯⼚ bean 的 id。
factory-method 属性: ⽤于指定实例⼯⼚中创建对象的⽅法。
-->
<bean id="instanceFactory" class="com.spring.factory.InstanceFactory"/>
<bean id="accountService" factory-bean="instanceFactory" factory-method="createUserService"/>

spring依赖注入

在项目中创建bean目录,并添加user类,定义构造方法和set方法。

构造函数注入

<!-- 使⽤构造函数的⽅式,给 user 中的属性传值
	要求:
	类中需要提供⼀个对应参数列表的构造函数。
	涉及的标签:
	constructor-arg
	属性:
	index: 指定参数在构造函数参数列表的索引位置
	type: 指定参数在构造函数中的数据类型
	name: 指定参数在构造函数中的名称 ⽤这个找给谁赋值
	===上⾯三个都是找给谁赋值,下⾯两个指的是赋什么值的===
	value: 它能赋的值是基本数据类型和 String 类型
	ref: 它能赋的值是其他 bean 类型,也就是说,必须得是在配置⽂件中配置过的 bean
-->
  <bean id="user" class="com.spring.bean.User">
        <constructor-arg name="name" value="张三"/>
        <constructor-arg name="age" value="18"/>
        <constructor-arg name="birthday" ref="now"/>
    </bean>
  <bean id="now" class="java.util.Date"/>

set方法注入

<!-- 通过配置⽂件给 bean 中的属性传值: 使⽤ set ⽅法的⽅式
涉及的标签:
property
属性:
name: 找的是类中 set ⽅法后⾯的部分
ref: 给属性赋值是其他 bean 类型的
value: 给属性赋值是基本数据类型和string类型的-->
<bean id="user" class="com.spring.bean.User">
        <property name="name" value="test"/>
        <property name="age" value="21"/>
        <property name="birthday" ref="now"/>
    </bean>
 <bean id="now" class="java.util.Date"/>

p名称空间注入数据

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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="user"
class="com.spring.bean.User"
p:name="test" p:age="21" p:birthday-ref="now"/>
<bean id="now" class="java.util.Date"/>
</beans>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值