跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 国内电商 > Java Web-分层解耦

Java Web-分层解耦

时间:2024-04-21 14:35:26 来源:网络cs 作者:亙句 栏目:国内电商 阅读:

标签:
阅读本书更多章节>>>>

三层架构

当我们所有代码都写在一起时,代码的复用性差,并且难以维护。就像我们要修改一下服务端获取数据的方式,从文本文档获取改为到数据库中获取,就难以修改,而使用三层架构能很好的解决这个问题。

controller: 控制层,接收前端发送的请求,对请求进行处理,并响应数据。
service:业务逻辑层,处理具体的业务逻辑。
dao: 数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查。

如下图是实现的一个三层架构的一个案例

Controller层: 

@RestControllerpublic class controllerTest {//创建服务层对象    peopleService peopleService =new peopleServiceA();    @RequestMapping("/test1")    public Result list(){//调用逻辑层     List<people> peopleList =peopleService.ListPeople();     return new Result(1,"",peopleList);        }    }

Service层

//定义接口public interface peopleDao {    public List<people> ListPeople();}
//实现类public class peopleServiceA implements peopleService{  private peopleDao pd =new peopleDaoA();//逻辑处理    @Override    public List<people> ListPeople() {        List<people> lp=pd.ListPeople();        return lp;    }}

Dao层

//定义接口public interface peopleDao {    public List<people> ListPeople();}
//实现类public class peopleDaoA implements peopleDao{//获取数据    @Override    public List<people> ListPeople() {        List<people> lp= new ArrayList<>() ;      return date.init(lp);    }}

解耦合

上述模块与模块之间耦合了,就像我们要给controller层换一个service对象,不再使用peopleserviceA了,而是使用peopleserviceB,那么不仅service层要修改,controller层的创建service层对象的代码也需要跟着更改。 我们的思想是通过一个容器来存储对象,需要的时候直接通过容器获取对象,这样就极大层度的解耦合了。

IOC控制反转,DI依赖注入

控制反转:就是把关于对象的创建的权限交给容器

依赖注入:容器为应用程序提供运行时所依赖的资源

Bean:IOC容器中创建管理的对象

IOC&DI入门

要将类交给IOC容器来处理,在类上加上注解就可以了。

注意:@RestController = @Controller + @ResponseBody 

Bean的名字可以通过注解的value属性来声明。没指定默认名字是类名小写。以上四个注解都可以声明bean,但在springBoot中集成web开发中,声明bean只能通过@Controller注解。

注解组件扫描:

声明bean的四大注解,想要生效,还需要被组件扫描注解@ComponentScan扫描。

@componentScan注解已经包含在了启动类注解@SpringBootApplication中。默认扫描的范围是启动类及其子包

要扫描其他的包可以传递参数进去。

DI依赖注入:

要完成依赖注入的操作,在成员变量上加上注解@autowired注解就可以了。IOC容器会创建bean对象并赋值给该变量。

@autowired注解默认按照类型进行的,如果存在多个相同类型的bean,会报错。可以通过以下方案解决。

1.将@Primary注解加在实现类上可以设置bean的优先级

2.用@Autowried注解配合Qualifier("bean名")使用。

3.通过使用@Resource(name="bean名")代替@Primary注解。

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/guonei/2024-04-21/160946.html,文章来源:网络cs,作者:亙句,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论