目录
建立空项目
建立一个模块:maven项目
建立数据层dao和业务层service的接口和实现类文件
目录如下:
BookDao.class
package com.itheima.dao;
public interface BookDao {
public void save();
}
BookDaoimpl.class
package com.itheima.dao.impl;
import com.itheima.dao.BookDao;
public class BookDaoimpl implements BookDao {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void save() {
System.out.println("BookDao运行了"+name+","+age);
}
//测试生命周偶器
public void init(){
System.out.println("初始化成功");
}
public void destroy(){
System.out.println("程序关闭");
}
}
BookService.class
package com.itheima.service;
public interface BookService {
public void save();
}
BookServiceimpl.class
package com.itheima.service.impl;
import com.itheima.dao.BookDao;
import com.itheima.dao.impl.BookDaoimpl;
import com.itheima.service.BookService;
public class BookServiceimpl implements BookService {
private BookDao bookDao=new BookDaoimpl();
public void save() {
System.out.println("BookService运行了");
bookDao.save();
}
}
UserDao接口
package com.itheima.dao;
public interface UserDao {
public void save();
}
Userdaoimpl。class
package com.itheima.dao.impl;
import com.itheima.dao.UserDao;
public class UserDaoimpl implements UserDao {
@Override
public void save() {
System.out.println("setter注入方法成功了");
}
}
建立测试类app.class
package com.itheima;
import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App3 {
public static void main(String[] args) {
//获取ioc容器
ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//setter注入方法
BookService service = (BookService) ctx.getBean("bookservice1");
service.save();
//依赖方式
}
}
在pom.xml导入spring的两个坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>springioc</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
建立配置文件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、-->
<!-- 起别名name,作用范围prototype
-->
<bean id="bookdao1" name="aa bb cc" class="com.itheima.dao.impl.BookDaoimpl" init-method="init" destroy-method="destroy" >
<property name="name" value="郭浩康"></property>
<property name="age" value="20"></property>
</bean>
<bean id="userdao1" class="com.itheima.dao.impl.UserDaoimpl"/>
<bean id="bookservice1" name="kk" class="com.itheima.service.impl.BookServiceimpl">
<!-- 配置service和dao发生关系-->
<!-- <property name="book" ref="aa"></property>-->
<property name="book" ref="aa"></property>
<property name="userDao" ref="userdao1"></property>
<!-- <property name="book" ref=bb"></property>-->
</bean>
</beans>
测试结果
知识点
Bean 的依赖注入概念
依赖注入(Dependency Injection):它是 Spring 框架核心 IoC(Inverse of Control)的具体实现。
在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是代码中不可能出现没有依赖的情况。IoC(Inverse of Control)解耦只是降低它们的依赖关系,但是不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用 Spring 之后,就让 Spring 来维护了。
简单地说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。有参构造方法注入