Spring使用
一、依赖
<!--Spring的依赖-->
<!--Spring的核心jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--Spring的ioc实体类需要的-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<!--Spring的AOC切面编程所需的(事务等)-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--主要是applicationContext文件的操作-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--主要是支持缓存JCA、JMX、 邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
二、配置核心文件applicationContext.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="users" name="usersName" class="com.mybatis.bean.Users">
<property name="id" value="1"/>
<property name="username" value="zqs"/>
<property name="sex" value="1"/>
<property name="birthday" value="1995-10-22"/>
<property name="address" value="四川"/>
</bean>
</beans>
applicationContext.xml文件标签
id: 相当于实体类对象的对象名
class: 实体类路径
name: 相当于实体类的属性
name属性 name不能重复!Name可以指定多个,逗号隔开!
lazy-init: 是否延迟加载,默认值为:false 只对单例有效 true :是在使用对象的时候创建对象
init-method: 对象初始化方法
destory: 对象销毁方法
scope: 主要是作用域,默认为单例模式
singletion 单例模式
prototype 多例模式 (每次使用对象的时候创建新对象)
request 表示在一次请求范围内,Spring容器中的对象保持一个,公用同一个!
session 表示在一次会话范围内,Spring容器中的对象保持一个,公用同一个!
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "Users")
public class Users {
@TableId(value = "id",type = IdType.AUTO)
private long id;
private String username;
private String birthday;
private String sex;
private String address;
public Users(String username) {
this.username = username;
}
}
第二种配置(调用有参有参构造)
<bean id="user2" class="com.mybatis.bean.Users" name="users2">
<constructor-arg name="id" value="2"/>
<constructor-arg name="address" value="中国"/>
<constructor-arg name="birthday" value="2020-09-22"/>
<constructor-arg name="sex" value="2"/>
<constructor-arg name="username" value="gd"/>
</bean>
三、测试
@Test
public void testSpring(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Users user = (Users)context.getBean("users");
System.out.println(user);
}
@Test
public void testSpring(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Users user = (Users)context.getBean("user2");
System.out.println(user);
}
得到的结果
Users(id=1, username=zqs, birthday=1995-10-22, sex=1, address=四川)
Users(id=2, username=gd, birthday=2020-09-22, sex=2, address=中国)
对象依赖注入
一、set注入
也就是上面第一种方法,给属性赋值
<bean id="users" name="usersName" class="com.mybatis.bean.Users">
<property name="id" value="1"/>
<property name="username" value="zqs"/>
<property name="sex" value="1"/>
<property name="birthday" value="1995-10-22"/>
<property name="address" value="四川"/>
</bean>
二、ref注入(引用另一个对象)
这种主要用于对象里面包含对象
<bean id="users" name="usersName" class="com.mybatis.bean.Users" scope="singleton">
<property name="id" value="1"/>
<property name="username" value="zqs"/>
<property name="sex" value="1"/>
<property name="birthday" value="1995-10-22"/>
<property name="address" value="四川"/>
<property name="car" ref="car"/>
</bean>
<bean id="car" name="carName" class="com.mybatis.bean.Car">
<property name="brand" value="大众"/>
<property name="color" value="白色"/>
</bean>
三、构造方法注入
上面的第二种方法
<bean id="user2" class="com.mybatis.bean.Users" name="users2">
<constructor-arg name="id" value="2"/>
<constructor-arg name="address" value="中国"/>
<constructor-arg name="birthday" value="2020-09-22"/>
<constructor-arg name="sex" value="2"/>
<constructor-arg name="username" value="gd"/>
</bean>