栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

01spring---IOC-1

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

01spring---IOC-1

目录

1.spring框架介绍

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

        1.1.1IOC

1.1.2DI(后续详细介绍)

1.1.3Java Bean

1.2AOP(面向切面编程)(后续详细介绍)

2.利用JUnit测试

2.1使用JUnit

2.2利用JUnit测试Spring 

3.组件扫描

3.1spring组件扫描功能

3.2Spring提供多种组件注解

3.3定义组件ID

1.spring框架介绍

        spring是开元Java软件框架,利用这套框架可以款速搭建Java软件。

        可以简单理解为框架:框架是半成品软件组件。

        具体表现来看,是一系列的jar包文件,普通的jar包只是工具包,而框架更多的是解决了某些特定的问题,比如开发效率问题,执行问题等。

        在使用框架时,可能还需要遵循框架的特定方式来编程。

        Spring框架有两个核心的功能,其他的组件也是基于这两个核心功能实现的:

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

        1.1.1IOC

        (Inversion of Control)直接翻译“控制反转”:

        1)主动控制:由应用程序主动控制管理“对象组件”。简单理解:对象的创建,管理都由自动亲手完成(适合管理创建过程简单的对象)。

        2)控制反转:由外部容器环境(框架)创建管理“对象组件”交给应用程序使用。简单理解:将对象的创建,管理交给Spring容器去管理,自己只是使用(适合创建过程复杂的对象)。

       创建一个spring测试程序:

        

1创建一个Maven项目

2.创建Demo类 

package com.jt.demo;

public class Demo {

    @Override
    public String toString(){
        return "hello spring";
    }
}

3.在pom文件中添加依赖

     
    
        1.8
        1.8
    

    
    
        
            org.springframework
            spring-context
            5.2.2.RELEASE
        
    

4.创建信息类config

package com.jt.congfig;

import com.jt.demo.Demo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration //标识这是一个配置类
//这个类想作用就是通知Spring启动以后创建的对象
public class Congfig {

    @Bean  //告诉Spring在启动的时候,加载被@Bean标识的方法
           //返回值是Sping创建的对象,方法名是Bean的ID,一般在项目中会有多个Bean,Spring会根据        
           //对应的方法名,找对应的Bean
    public Demo textConfig(){
        return new Demo();
    }
}

5.利用测试类进行测试

package com.jt.textdemo;

import com.jt.demo.Demo;
import com.jt.congfig.Congfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Text {
    public static void main(String[] args) {
        //初始化spring容器
        //AnnotationConfigApplicationContext 是spring官网提供的
        AnnotationConfigApplicationContext applicationContext=
                new AnnotationConfigApplicationContext(Congfig .class);
        //获取spring创建对象
        Demo demo = applicationContext.getBean("textConfig", Demo.class);
        System.out.println(demo);
        
    }
}

 结果返回hello spring 则测试成功

1.1.2DI(后续详细介绍)

1.1.3Java Bean

        Bean的英文意思是“豆子”

        为了规范java类的定义,java提供Java Bean规范,所谓的JavaBean规范就是约定java类的定义规则,使程序规范一致,方便使用和交流。其约定如下:

        1.需要定义包package

        2.有无参构造器

        3.需要实现序列化接口(序列化能把堆内存中的对象的声明周期延长,做持久化操作,当下次再需要这个对象的时候,我们不用new了,直接从硬盘中读取就可以了)

        4.包含使用getXxx setXxx声明的“Bean属性”xxx

                1)Bean属性(Bean Property)就是指getXxx setXxx的用法

                2)对象属性(Object Filed)是指对象的实例化变量

      spring与JavaBean

        1.Spring建议被其管理的对象符合JavaBean规范,同时为了方便实用Spring也支持对不标准的Java对象进行管理

        2.因为Spring管理的对象是JavaBean对象,所以也称Spring为JavaBean容器、Bean容器、Spring容器、IOC容器

案列:

package com.jt.demo;  
import java.io.Serializable;

public class User implements Serializable { 
    
    private String name="zhangsan"; //实例变量,对象属性
    
    public String getName() {  //Bean属性 name
        return name;
    }

    public void setName(String name) { //Bean属性 name
        this.name = name;       
    }
    
    public String getLastName(){  //Bean属性 lastName
        return name.substring(0,1);
    }
    
}

1.2AOP(面向切面编程)(后续详细介绍)

2.利用JUnit测试

2.1使用JUnit

1.导包

       dependency>
            junit
            junit
            RELEASE
            compile
        

2.测试

package com.jt;

import org.junit.Test;

public class TestHello {
    @Test  //单元测试
    public void textHello(){
        System.out.println("hello word!");
        }
}

        结果在控制台输出:hello word!

2.2利用JUnit测试Spring 

        测试Spring的时候需要Spring容器的代码冗长麻烦,利用Junit的@Before和@After注解声明方法,封装Spring的初始化和销毁方法,可以一劳永逸的解决S皮ring的初始化问题。

案列:

package com.jt.test;

import com.jt.config.ConfifDemo;
import com.jt.demo.Demo;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Text1 {

    AnnotationConfigApplicationContext context ;
    @Before
    public void before(){
        //初始化Spring容器
        context = new AnnotationConfigApplicationContext(ConfifDemo.class);

        System.out.println("spring销毁之前");
    }
    @After
    public void after(){
        context.close();//关闭
        System.out.println("spring销毁之后");
    }

    @Test
    public void testHello(){
                                      // 第一个参数为Bean id ,第二个为类名.class
        Demo demo = context.getBean("demoText", Demo.class);
        System.out.println(demo);
    }

}

控制台输出内容:

spring销毁之前
hello word!
spring销毁之后

3.组件扫描

3.1spring组件扫描功能

        spring提供组件扫描注解,利用组件扫描注解和组件注解配合,可以自动扫描包空间自动创建Bean对象,减少编码,提高编程的效率

案列:

1.案例结构

 2.提前准备的数据

package com.jt.bean;

import org.springframework.stereotype.Component;

//@Component
@Component("BeanDemo") //自己写Bean id 建议使用默认的Bean id 减少代码,进而降低出错率
public class BeanDemo01 {

    @Override
    public String toString() {
        return "hello BeanDemo01";
    }
}

3.编写配置类

package com.jt.config;

//import com.jt.demo.Demo;
//import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.jt.bean")
public class Config {
//    @Bean
//    public Demo bean(){
//        return new Demo();
//    }
    
}

4.进行测试

package com.jt.test;

import com.jt.bean.BeanDemo01;
import com.jt.config.Config;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.io.Serializable;

public class TestDemo01 implements Serializable {

    AnnotationConfigApplicationContext cgx;

    @Before
    public void before(){
        System.out.println("bean创建之前");
        //注意,此处传的参数为配置类的类名.class
        cgx=new AnnotationConfigApplicationContext(Config.class);
    }
    @After
    public void after(){
        cgx.close();
        System.out.println("bean被销毁了");
    }
    @Test
    public void  testBeanDemo(){
                                    //  Bean id
        BeanDemo01 demo01 = cgx.getBean("BeanDemo", BeanDemo01.class);
        System.out.println(demo01);
    }
    
}

5.结果

bean创建之前

hello BeanDemo01

bean被销毁了

3.2Spring提供多种组件注解

         Spring提供了多种组件注解,用于程序中不同用途的组件标注,这些注解名字不同但作用是相同的,包括:

        @Controller   控制器组件

        @Service       业务层组件

        @Component 通用组件

3.3定义组件ID

在使用组件扫描功能的时候@Component注解可以添加属性,自定义组件的id

//@Component
@Component("BeanDemo") //自己写Bean id 建议使用默认的Bean id 减少代码,进而降低出错率

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号