IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 复习复习spring,来回顾下 -> 正文阅读

[Java知识库]复习复习spring,来回顾下

回顾spring的基本使用

俗话说:刀久了不用会生锈,同样知识久了也会生疏,本文就spring的基本使用做一个回顾。

概念

spring是一个轻量级控制反转(IoC)面向切面(AOP)的容器(框架)

IOC:即控制反转,指创建对象的控制权转移给Spring框架进行管理,并由Spring根据配置文件去创建实例和管理各个实例之间的依赖, 对象与对象之间松散耦合,也利于功能的复用。

AOP:即面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块。这个模块被命名为“切面’’,减少系统中的重复代码,降低了模块间的耦合度,提高系统的可维护性。可用于权限认证,日志,事务管理。

优点

  • spring属于低侵入式设计,代码的污染性低
  • spring的DI机制将对象之间的依赖关系交由框架处理,减低组建的耦合度
  • spring对主流的应用框架提供了集成支持

使用

简单演示一下

  1. 创建springboot项目

  2. 假设dao下有这样一个接口:

    package com.lys.dao;
    
    public interface dbDao {
        void use();
    }
    

    并有两个实现上述接口的类:

    package com.lys.dao.dbimpl;
    
    import com.lys.dao.dbDao;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class OracleImpl implements dbDao {
        @Override
        public void use() {
            System.out.println("Oracle 数据库");
        }
    }
    
    package com.lys.dao.dbimpl;
    
    import com.lys.dao.dbDao;
    import org.springframework.stereotype.Repository;
    
    //自动默认的bean的名字是类名首字母小写
    @Repository("mysql")// 自定义bean的名字
    public class MySQLImpl implements dbDao {
        @Override
        public void use() {
            System.out.println("mysql 数据库");
        }
    }
    
  3. 实际使用中获取类的对象实例

    有多种方式获取,分别是通过自定义名称类名.class,或者默认的bean名称,如下;

    @SpringBootTest
    class Spring12ApplicationTests implements ApplicationContextAware {
        private ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext=applicationContext;
        }
    
        @Test
        public void test1(){
            //方式1:使用bean的自定义名称
            //MySQLImpl mySQL = (MySQLImpl) applicationContext.getBean("mysql");
    
            //方式2:使用bean的默认名称(即类名的首字母小写)
            //MySQLImpl mySQL = (MySQLImpl) applicationContext.getBean("mySQLImpl");
    
            //方式3:  使用类名.class指定bean类型
            MySQLImpl mySQL =applicationContext.getBean(MySQLImpl.class);
            mySQL.use();
        }
    }
    

4.其实获取bean对象的过程还可以进一步简化,通过@Autowired可以实现自动装配,上面的测试可以简化如下:

@SpringBootTest
class Spring12ApplicationTests implements ApplicationContextAware {
    @Autowired
    private MySQLImpl mySQLImpl;
    
    @Test
    public void test1(){
        mySQL.use();
    }
}

5.当要引用第三方库时如何注册bean呢?可以写一个配置类,加上注解@confuguration,标明这是一个特殊的类,在类中用@Bean可以自定义返回的Bean类型

举例:

package com.lys.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.text.SimpleDateFormat;

@Configuration
public class AlphaConfig {
    @Bean
    public SimpleDateFormat simpleDateFormat(){
        //这里注册一个时间格式化的bean实例
        return new SimpleDateFormat("yyyy-MM-dd");
    }
}

当需要时这样调用:

package com.lys;
import java.text.SimpleDateFormat;
import java.util.Date;

@SpringBootTest
class Spring12ApplicationTests implements ApplicationContextAware {
    @Autowired
    private SimpleDateFormat simpleDateFormat;

    @Test
    public void test3(){
        System.out.println(simpleDateFormat.format(new Date()));
    }
}

Spring常用注解

注解名称功能
@Controller标识该类是spring MVC controller处理器,用来创建http请求对象
@RestControlle@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。
@Service用于标记业务层组件
@Autowired写在字段上或者方法上,用来装配bean
@Repository用于标注数据访问组件,即Dao组件
@component当组件不好归类的时候,可以用此注解泛指组件
@Scope用来标识bean的作用域
@Qualifier当创建多个具有相同类型的bean时,可以使用@Qualifier和@Autowired注释使用哪一个真正的bean来装配,从而消除装配时可能遇到的混乱
@RequestMapping提供初步的请求映射信息
@RequestParam用于将请求参数区数据映射到功能处理方法的参数上
等等
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:03:18  更:2021-10-21 12:05:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/29 0:28:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码