其他分享
首页 > 其他分享> > Spring学习-01day【Spring是啥?+ IOC理论推导——耦合问题】

Spring学习-01day【Spring是啥?+ IOC理论推导——耦合问题】

作者:互联网

Spring :是一种轻量级开源框架

创建步骤

1.创建项目

2.导入maven

Spring 的mevan:

1 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
2 <dependency>
3     <groupId>org.springframework</groupId>
4     <artifactId>spring-webmvc</artifactId>
5     <version>5.3.15</version>
6 </dependency>

3.创建目录结构

 

 

 DAO

  创建UserDao接口,添加一个方法

1 package com.sen.dao;
2 
3 public interface UserDao {
4    void getUser();
5 }

  创建UserDao接口实现类 UserDaoImpl 实现接口中的方法 并在调用是时会输出语句

1 package com.sen.dao;
2 
3 public class UserDaoImpl implements UserDao {
4     public void getUser() {
5         System.out.println("获取默认用户数据");
6     }
7 }

Service

  创建UserService接口,添加一个方法

1 package com.sen.service;
2 
3 public interface UserService {
4     void getUser();
5 }

  创建UserService实现类 实现接口中的方法

 1 package com.sen.service;
 2 
 3 import com.sen.dao.UserDao;
 4 import com.sen.dao.UserDaoImpl;
 5 
 6 public class UserServiceImpl implements UserService{
 7     //业务层怎么调用接口层? 把dao引入到service中
 8     private UserDao userDao= new UserDaoImpl();
 9 //接口的实例化:声明一个UserDao,他可以调用UserDaoImpl中的所有方法。
10     public void getUser() {
11 //这样!业务层就能调接口层了
12         userDao.getUser();
13     }
14 }

表现层

  创建测试类 在测试类中创建 业务层对象 执行业务层的方法();

 1 import com.sen.service.UserService;
 2 import com.sen.service.UserServiceImpl;
 3 
 4 public class FirstTest {
 5     public static void main(String[] args) {
 6         //用户(测试层)实际调用的是业务层,他们不需要接触 接口层
 7         UserService userService = new UserServiceImpl();
 8         userService.getUser();
 9     }
10 }

以上就最简单的三层架构 接口层、业务层 、表现层

 

 

IOC理论推导 → 问题是:如果要再增加 一个实现类怎么 让客户(表现层)能够使用到他?

 

 

改这个太麻烦。如果又再增加 一个实现类怎么解决?

通过set()方法进行依赖注入 在接口层注入set,将程序由主动变为被动,等用户层(表现层)传递参数!

1 private UserDao userDao;
2 
3     //利用set实现 值的 动态注入  接收 传过来的 》?
4     public void setUserDao(UserDao userDao) {
5         this.userDao = userDao;
6     }

标签:01day,UserDao,Spring,接口,com,UserService,sen,IOC,public
来源: https://www.cnblogs.com/verrzert/p/15856100.html