Spring学习篇(一)
1 准备工作
1.1 在pom.xml文件里面导入spring依赖
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.3.22version>
dependency>
1.2 在java文件下创建dao包和service包
1.3 在dao包下创建ProductDao类
package dao;
public class ProductDao {
public void select(){
System.out.println("在数据库中 查询所有商品 ");
}
}
1.4 在service包下创建ProductService类
package service;
import dao.ProductDao;
public class ProductService {
public ProductService() {
}
public void select(){
System.out.println("在业务层中 调用dao层方法 ");
}
}
1.5 在resources文件夹下创建一个spring.xml文件
1.5.1 右键new—>xml configuration---->Spring config
1.5.2 输入spring.xml然后回车即可
2 使用spring创建对象(IOC)
2.0 bean标签属性总结
id表示组件在容器中的唯一标识 一般写这个
name标识在容器中的名称 唯一,可以写特殊符号.与id的作用类似
scope 作用范围 默认是单例模式(singleton 单例),单例是每次获取的对象都是同一个实例
还有原型模式(prototype),每次getBean就能获取新的实例
class 类的全限定名(先要容器初始化谁,你就写谁)
2.1 使用bean标签与类关联
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="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/util https://www.springframework.org/schema/util/spring-util.xsd">
<bean id="pd" class="dao.ProductDao>
"ps" class="service.ProductService">
bean>
beans>
2.2 加载spring配置文件 初始化容器
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
2.3 使用getBeans()方法获取创建好的对象并进行方法的调用
ProductDao pd = (ProductDao) ac.getBean("pd");
pd.select();
System.out.println("---------------------");
ProductService ps = (ProductService) ac.getBean("ps");
ps.select();
2.4 测试运行截图
2.5 注意事项
2.5.1 使用getBean去获取对象,最好是使用id
2.5.2 spring,xml中的bean标签的class值不能有重复的
3 使用spring注入属性(DI)
3.1 通过set方法注入
3.1.1 需要定义属性和其对应的set方法
private ProductDao pd;
public void setPd(ProductDao pd) {
this.pd = pd;
}
3.1.2 在相应的bean标签里面写上property标签
3.1.3 完整代码
a ProductDao类
package dao;
public class ProductDao {
public void select(){
System.out.println("在数据库中 查询所有商品 ");
}
}
b ProductService类
package service;
import dao.ProductDao;
public class ProductService {
private ProductDao pd;
public void setPd(ProductDao pd) {
this.pd = pd;
}
public ProductService() {
}
public void select(){
System.out.println("在业务层中 调用dao层方法 ");
pd.select();
}
}
c test类
import dao.ProductDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.ProductService;
public class Test {
public static void main(String[] args)
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
ProductService ps = (ProductService) ac.getBean("ps");
ps.select();
}
}
3.1.4 测试运行截图
3.2 通过构造方法注入
3.2.1 创造一个有参构造
public ProductService(ProductDao pd) {
this.pd = pd;
}
3.2.2 在对应的bean中创建constructor标签
<constructor-arg name="pd" ref="pd">constructor-arg>
3.2.3 完整代码
a productDao类
package dao;
public class ProductDao {
public void select(){
System.out.println("在数据库中 查询所有商品 ");
}
}
b productService类
package service;
import dao.ProductDao;
public class ProductService {
private ProductDao pd;
public ProductService() {
}
public ProductService(ProductDao pd) {
this.pd = pd;
}
public void select(){
System.out.println("在业务层中 调用dao层方法 ");
pd.select();
}
}
c test类
import dao.ProductDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.ProductService;
public class Test {
public static void main(String[] args)
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
ProductService ps = (ProductService) ac.getBean("ps");
ps.select();
}
}
3.2.4 测试运行截图