Spring专家课程Day01_Spring-IOC

这篇具有很好参考价值的文章主要介绍了Spring专家课程Day01_Spring-IOC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础配置

1)基础文件结构(Maven项目创建)

Spring专家课程Day01_Spring-IOC

一、01_Spring概述_IOC_HelloWorld

1.Spring框架的两个核心功能

1.1) IOC/DI ,控制反转依赖注入!

Spring专家课程Day01_Spring-IOC

1.2) AOP,面向切面编程

2.IOC的两种模式

2.1)配置文件中配置 @Bean

Spring专家课程Day01_Spring-IOC

2.2)配置文件,组件扫描注解+类注解@Component

参考二里面的明细3

二、02_JavaBean_JUnit_组件扫描

1.JavaBean的概念

Spring专家课程Day01_Spring-IOC
Spring专家课程Day01_Spring-IOC

2.Junit的引入

2.1) junit的@Before 和 @After注解

public class TestCase {

    AnnotationConfigApplicationContext ctx;

    @Before
    public void init(){
        ctx = new AnnotationConfigApplicationContext(Config.class);
        System.out.println("初始化Spring");
    }

    @After
    public void destroy(){
        ctx.close();
        System.out.println("销毁Spring");
    }

    @Test
    public void testScope(){
       Date d= ctx.getBean("myDate", Date.class);
        System.out.println(d);
    } 
}

3.组件扫描功能@ComponentScan

Spring专家课程Day01_Spring-IOC

4.Spring提供的多种注解

Spring专家课程Day01_Spring-IOC

5.自定义组件ID

实际中很少这么做,会增加出错率
Spring专家课程Day01_Spring-IOC

三、03_作用域_Bean生命周期管理

生命周期管理是否需要使用,根据具体业务需求而定;

1.基于javax.annotation包的注解

注意:因为以下注解不属于Spring,属于annotation,所以要单独引入

1.1 @PostContruct

	创建对象以后自动执行

1.2 @PreDestroy : 对象销毁时自动执行的注解

   关闭容器关闭对象时候执行

1.3 示例

组件代码:

@Component
public class FileLogger03 {

    public PrintWriter out;

    @PostConstruct
    //Spring创建Bean对象后自动执行初始化方法
    public void open() throws Exception{
        out =new PrintWriter("Demo.text");
        System.out.println("打开Demo.text");
    }

    @PreDestroy
    //Spring 容器关闭时销毁对象,自动执行销毁方法
    public void close() {
        out.close();
        System.out.println("关闭Demo.text");
    }
}

配置类代码:

@Configuration
@ComponentScan(basePackages = "cn.tedu.demo")

public class Config { 

}

测试类代码:

public class TestCase {

    AnnotationConfigApplicationContext ctx;

    @Before
    public void init(){
        ctx = new AnnotationConfigApplicationContext(Config.class);
    }

    @After
    public void destroy(){
        ctx.close();
    } 

    @Test
    public void testScope(){
        FileLogger03 ff= ctx.getBean("fileLogger03",FileLogger03.class);
        ff.out.println("aaaaaaa");
        ff.out.println("ddddddd");
        System.out.println("life test");
    } 
}

2.基于Spring的@Bean自带注解

2.1 @Bean(intitMethod=“open” ,destroyMethod = “close”)

2.2 示例代码

组件代码:

//配置类采用了@Bean ,所以此处不用再@Component 
public class DemoLogger {

    public PrintWriter out;
  
    public void open() throws Exception{
        out =new PrintWriter("Demo.text");
        System.out.println("打开Demo.text");
    }
  
    public void close() {
        out.close();
        System.out.println("关闭Demo.text");
    }
}

配置类:

@Configuration
//因为是采用@Bean标注,所以@ComponentScan可以省略
public class Config {  
    
    @Bean(initMethod = "open",destroyMethod = "close")
    public DemoLogger demoLogger(){
        return new DemoLogger();
    }
    
}

测试类:

    @Test
    public void testLogger(){
        DemoLogger gl = ctx.getBean("demoLogger", DemoLogger.class);
        gl.out.println("good morning!");
    }

3 @Scope(“prototype”)的特殊情况

每次都创建一个对象,Spring为了避免内存泄漏,不会缓存对象的引用,所以Spring关闭时候就无法处理对象的销毁方法,需要手动销毁.
配置类:

    @Bean(initMethod = "open",destroyMethod = "close")
    @Scope("prototype")
    public DemoLogger demoLogger(){
        return new DemoLogger();
    }

测试类:

    @Test
    public void testLogger(){
        DemoLogger gl = ctx.getBean("demoLogger", DemoLogger.class);
        gl.out.println("good morning!");
        gl.close(); //因为开启了  @Scope("prototype"),此处需要手动关闭
    }

四、 04_懒惰初始化_@Import

4.1 @Lazy 可以和@Component配合

前提组件有@Component,会自动创建;不想创建的话就是加上@Lazy

@Component
@Lazy
public class FileLogger03 {

    public PrintWriter out;

    @PostConstruct
    //Spring创建Bean对象后自动执行初始化方法
    public void open() throws Exception{
        out =new PrintWriter("Demo.text");
        System.out.println("111打开Demo.text");
    }

    @PreDestroy
    //Spring 容器关闭时销毁对象,自动执行销毁方法
    public void close() {
        out.close();
        System.out.println("111关闭Demo.text");
    }
}

4.2 @Lazy 可以和@Bean配合

配置中

   @Bean
   @Lazy
    public DemoLogger demoLogger(){
        return new DemoLogger();
    }

4.3 @import 多人开发,多配置文件合并

Spring专家课程Day01_Spring-IOC文章来源地址https://www.toymoban.com/news/detail-503147.html

@Configuration
@ComponentScan(basePackages = "cn.tedu.demo")
@Import({SysConfig.class})
public class Config {

}

总结:

1.MVN地址

到了这里,关于Spring专家课程Day01_Spring-IOC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSA GCR大会正式发布全球首个云渗透测试认证专家课程,腾讯安全获评“特别贡献单位”

    4月13日,第六届云安全联盟大中华区大会(CSA GCR Congress)在上海举办,大会由联合国数字安全联盟、上海市经济和信息化委员会、上海市委网络安全和信息化委员会办公室、上海市普陀区人民政府指导,云安全联盟大中华区主办。 会上,CSA GCR正式发布了全球首个云渗透测试

    2024年02月15日
    浏览(41)
  • 京东技术专家首推:Spring 微服务架构设计,GitHub 星标 128K

    本书提供了实现大型响应式微服务的实用方法和指导原则,并通过示例全面 讲解如何构建微服务。本书深入介绍了 Spring Boot、Spring Cloud、 Docker、Mesos 和 Marathon,还会教授如何用 Spring Boot 部署自治服务,而 无须使用重量级应用服务器,并介绍 Spring Cloud 框架的各项能力、如何

    2024年02月15日
    浏览(47)
  • Day-01-01

    项目介绍 1. 业务功能 本项目包括了用户端、机构端、运营端。 2. 技术选型 各层简要说明: 环境配置 1. 版本信息 在开发过程中,个人使用gitee作为版本控制工具。 2. 虚拟机安装说明 根据所提供资料,虚拟机IP地址已设置为192.168.101.65,将虚拟机复制后,默认使用VMnet8作为网

    2024年02月20日
    浏览(28)
  • 【STM32】STM32学习笔记-课程简介(01)

    程序纯手打,手把手教学 STM32最小系统板+面包板硬件平台 该平台比较适合高校在校大学生学习STM32。 STM32最小系统+面包板 Windows10操作系统 万用表、示波器、镊子、剪刀等 Keil5 MDK 4.1 面包板和跳线/飞线 4.2 杜邦线和STM32最小系统板 4.3 STLINK和OLED显示屏 4.4 LED和按键 4.5 电位器和

    2024年03月18日
    浏览(51)
  • 【课程复习-01】国科大-随机过程知识点精简版

    孙老师的随机过程课太硬了,期末6道题没一道简单的,就前面3道会一点,博主耗尽毕生所学尽力了,希望老师别挂我。 常见分布的概率密度和分布 0-1分布 二项分布 泊松分布 几何分布 均匀分布 指数分布 概率密度函数: 称X服从参数为θ的指数分布 分布函数: 均值: E (

    2024年01月18日
    浏览(40)
  • 【银角大王——Django课程Day1】

    python ________python.exe ________Scripts ________________pip.exe ________________django-admin.exe【工具,创建Django项目】 ________Lib ________________内置模块 ________________site-packages ________________________openpyxl ________________________python-docx ________________________flask ________________________django【框架的源码】 … (

    2024年04月23日
    浏览(28)
  • Unity实现用WASD控制一个物体前后左右移动-小白课程01

      02 根据业务写代码   完成

    2024年02月09日
    浏览(46)
  • MYSQL阶段_DAY01~DAY11(附笔记)

    注意:(数据表如下) sort表: user表: zhangwu表:   1.Part1  JDBC操作数据库的步骤     1.注册驱动         告知JVM使用的是哪一个数据库的驱动,         把驱动类的对象交给DriverManager管理,用于后面创建连接等使用。          2.获得连接     使用JDBC中的类,完成对

    2024年02月11日
    浏览(32)
  • day01刷题记录

    牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。 例如: 一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3 一个队伍三个

    2024年02月02日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包