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

Springday01

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

Springday01

什么是Spring?

Spring 是分层的Java SE/EE应用轻量级开源框架,以IoC(Inversion of Control控制反转,目的是解耦)和AOP(面向切面编程,本质是动态代理,目的是增强)为内核

Spring的优势:

1、方便解耦,简化开发(IoC思想)

2、AOP编程的支持

3、声明式事务的支持,在xml里面配置事务,在方法上或者类上 打一个注解即可

4、方便程序的测试

5、方便集成各种优秀框架

6、降低JavaEE API的使用难度

7、Java源码是经典学习范例

耦合和内聚:

耦和:代码书写过程中所使用的的技术结合紧密度,用户衡量软件中各个模块的互联程度。

内聚:代码书写过程中单个模块内部各组成部分间的联系,用于衡量软件中各模块内部的功能联系

程序书写的目标:高内聚,低耦合

就是同一个模块中各个元素要高度紧密,但是各个模块间的相互依存度不要那么紧密

控制反转IOC:
  • 什么是IOC inversion of control

控制反转,把对象的创建工作交给框架(工厂 Spring),我们不需要自己去new这个对象,只管问工厂要。由原来的主动创建对象,变成自己被动接收 框架创建的对象。

  • IOC的作用

IOC是Spring的核心之一,作用就是为了解耦,降低程序,代码间的耦合度。

基础入门:

1、添加依赖:


        
            org.springframework
            spring-context
            5.1.7.RELEASE
        

        
            junit
            junit
            4.13
            test
        
    

2、创建UserService接口

public interface UserService {
    
    void add();
}

3、创建UserService的实现类

public class UserServiceImpl implements UserService {
    @Override
    public void add() {
    }
}

4、在resource下创建applicationContext.xml文件(new->xml configurer-->spring config),创建spring的控制资源




    

5、在test文件夹下创建测试类

//创建工厂
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//问工厂要对象
        UserService us2 = (UserService)context.getBean("us");
//调用对象方法
        us2.add();
    }
标签:用于配置,把对象交给spring进行控制,spring会帮助我们创建对象。

注意:spring是调用类的无参构造的创建对象,如果没有无参构造方法,对象不能创建成功。

基本属性:

1、id:唯一表示,不可重复,没有设置id值的情况下,默认以首字母小写的类名作为id值

2、class:bean的权限类名,要写全路径

3、scope:用来定义对象的使用范围,更多的时候是用来定义是单例还是多例对象。

3.1、singleton:表示单例的,一个spring容器里只有一个该bean对象

3.2、prototype:表示多例,一个spring容器里拥有多个该bean对象,每次调用对象都是一个新的对象

  • init-method:指定类中初始化方法名称,该方法将在bean对象被创建时执行
    • singleton:

1、方法只会调用一次,而且是在创建工厂的时候就调用了;

2、同时也表明了如果托管的类时单列的配置,那么这个类的对象,会在创建工厂的时候,就顺便创建了。

prototype:

1、方法会调用多次,问工厂要多少次对象,就会调用多少次;

2、托管的类时多列配置,那么这个类的对象,会在问工厂要对象的时候才会创建

  • destroy-method:指定类中销毁方法名称,该方法将在bean对象被销毁时执行

singleton:

1、如果关闭了工厂,调用close方法,那么工厂关闭时,就会把单列对象也销毁了,顺便调用了destroy方法。

prototype:

2、如果关闭了工厂,那么destroy方法不会调用,因为多例对象不由工厂来管理他们的状态

DI:依赖注入:

应用程序运行依赖的资源有spring为其提供,资源进入应用程序的方式称为注入

三种常见的注入方式: 1、set方法注入: 标签:

作用:使用set方法的形式为bean提供标签

name:对应bean中的属性值,

value:设定非应用类型的对应的值,不能与ref同时使用

ref:设定应用类型对应的值,不能与value同时使用

代码:

1、创建dao接口

public interface UserDao {
    void add();
}

2、创建dao的实现类

public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println("调用了userdaoimpl的add方法");
    }
}

3、创建service接口

public interface UserService {

    void add();
}

4、创建service的实现类

    private UserDao userDao;
    public void setUserDao(UserDao userDao){
        this.userDao=userDao;
        System.out.println("调用了set方法注入值");
    }

    public void add() {
        System.out.println("调用了UserServiceImpl。。。。。方法");
        userDao.add();
    }
}

5、创建spring的核心配置文件applicationContext.xml



    
    

        
    
    
    

6、编写测试方法

@Test
    public void TestAdd(){
    System.out.println("来调用测试方法了----");
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    UserService us =(UserService) context.getBean("us");

    us.add();
}

7、打印结果

来调用测试方法了----
调用了set方法注入值
调用了UserServiceImpl。。。。。方法
调用了userdaoimpl的add方法

流程:ioc容器里面已经有了UserDaoImpl的对象,目前UserServiceImpl需要这个对象

那么:1、现在UserServiceImpl里定义一个USerDao类型的属性,

2、提供这个属性的set方法

3、需要xml里面托管UserServiceImpl类的时候,向spring表明,要给我的类里面的UserDao赋值

2、构造器注入 标签:

作用:构造方法专用的为bean赋值的标签,name,value,ref使用方法与property一致

    

    
        
    
private  UserDao userDao;
public  UserServiceImpl(UserDao userDao){
    this.userDao = userDao;
}
3、p名称注入

1) 介绍

p名称空间注入,本质仍然是set方法注入

在xml中引入p名称空间的约束

然后通过p:属性名称=""来注入简单数据、使用p:属性名称-ref=""注入其它bean对象,它的本质仍然是set方法注入

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:p="http://www.springframework.org/schema/p"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

   http://www.springframework.org/schema/beans/spring-beans.xsd">

   

ApplicationContext的继承体系
  • ApplicationContext:接口,代表应用上下文,可以通过其实例对象获取Spring容器中的bean对象

getbean方法介绍:

getbean():通过id,name,class类型来获取对象,id可和name或者class搭配使用,有id不能单独使用name获取

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

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

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