第1章 初识Spring Boot,开发社区首页(三) - Spring入门

Spring全家桶

  1.     Spring Framework:基石
  2.     Spring Boot:build anything
  3.     Spring Cloud:coordinate anything
  4.     Spring 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的一个原理图,我们将业务对象和配置文件注入spring容器,就能够使用,为了更好的理解,我们用代码来展示一下。

IoC原理图

 

当我们需要在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();
    }

}

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();
    }
}

package com.neu.langsam.nowcoder.dao;


import org.springframework.stereotype.Repository;

@Repository
public class HotwordDao {
    public String findAll(){
        return "秃头";
    }
}



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

重要注解:

  • @controller(请求)、@Repository(数据库)、@Service(业务)和@Component(任意调用)可以使得spring容器扫描bean;
  • 可以直接使用application.getbean()的方式获得,也可以使用@Autowired依赖注入的方式;
  •  如果bean出现重名,可以使用name将其区分开,也可以使用@primary设置其优先级; 默认创建的bean对象都是单例的,如果需要改变不是单例@singlone可以写成@prototype改变成多例的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值