牛客网项目 1.3 spring入门

it2025-10-02  8

Spring全家桶

Spring Framework:基石Spring Boot:build anythingSpring Cloud:coordinate anythingSpring Cloud Data Flow:connect anything

Spring Framework

Spring Core IoC、AOP(IoC控制反转,AOP面向切面,是Spring的核心,是管理bean的思想) Spring Data Access Transactions、Spring MyBatis(数据库事务和mybatis) Web Servlet Spring MVC(web服务) Integration Email、Scheduling、AMQP、Security(邮件,定时任务,消息队列,安全服务)

Spring IoC

Inversion of Control 控制反转,是一种面向对象编程的设计思想 Dependency Injection 依赖注入,是IoC思想的实现方式、 IoC Container IoC容器,是实现依赖注入的关键,本质上是一个工程

理解IoC

要给ioc容器两份数据,一份那些pojo文件,另一个是配置文件

下图是IoC的一个原理图,我们将业务对象和配置文件注入spring容器,就能够使用,为了更好的理解,我们用代码来展示一下。

当我们需要在class A里面使用class B时,一般情况下,需要在A的代码中显式的new一个B的对象。那么用IoC的思想,采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML,spring里用注解代替配置文件)来指定。

上一篇博客最后,做了一个简单的示例,现在我们假设有这样一个业务,当用户访问时,我们从数据库里查询热搜词条返回,后端接到这个请求怎么去处理呢。首先是controller层,它负责管理业务(service)调度和跳转,它接到请求后让相应的service去负责,service层负责具体的业务,业务里涉及到数据库的由dao层负责。如图创建好相应的包和类。

package com.neu.langsam.nowcoder.controller; import com.neu.langsam.nowcoder.service.HotwordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HotwordController { @Autowired HotwordService hotwordService; @RequestMapping(value = "/hotword") @ResponseBody public String getHotword(){ return hotwordService.getHotword(); } } 12345678910111213141516171819202122 package com.neu.langsam.nowcoder.service; import com.neu.langsam.nowcoder.dao.HotwordDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class HotwordService { @Autowired HotwordDao hotwordDao; public String getHotword(){ return hotwordDao.findAll(); } } 1234567891011121314151617 package com.neu.langsam.nowcoder.dao; import org.springframework.stereotype.Repository; @Repository public class HotwordDao { public String findAll(){ return "秃头"; } } 123456789101112

ass HotwordDao { public String findAll(){ return “秃头”; } }

123456789101112

为了方便,没有连接数据库,直接返回了一个词。可以看到,在controller层中,我们调用了service层的代码,却不是直接new一个对象,而是用@Autowired注解,并在类上使用了@Controller注解,这些注解帮助我们自动配置并注入对象,我们在使用时就不用new对象,从而减少代码耦合。
最新回复(0)