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

Spring学习第一天----笔记

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

Spring学习第一天----笔记

1.什么是Spring

Spring是一款目前主流的 Java EE 轻量级开源框架,它是以IOC(控制反转)和AOP(面向切面编程)为内核。

2.Spring框架的优点

1.方便解耦,简化开发

2.支持AOP

3.方便程序的测试

4.方便集成各种优秀框架

3.Spring的体系结构

4.入门的第一个程序(基于Maven,IDEA版)

1.创建Module->Maven->选择“Create from archetype”->找到如图选项并创建好项目

2.在pom.xml的poject标签中配置以下代码导入包(配置完成不要忘记点击刷新)


    
        org.springframework
        spring-context
        5.3.16
    

 3.创建com.dao包并创建UserDao.java(最好自己手敲一遍)

public interface UserDao {
    public void save();
}

4.在dao包中创建impl包并在impl包中创建UserDaoImpl.java

public class UserDaoImpl implements UserDao {
    public void save() {
        System.out.println("save running...");
    }
}

5.在resources文件夹中创建applicationContext.xml,在beans标签中添加

6.在impl包下创建Test.java

public class Test implements UserService {
    public static void main(String[] args) {
        //1.初始化spring容器,加载配置文件
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.通过容器获取userDao实例
        UserDao userDao = (UserDao) app.getBean("userDao");
        //3.调用实例中的save()方法
        userDao.save();
    }
}

写完之后在Test.java中点击运行并看到save running...即为成功

5.Spring框架中配置文件的常用配置

在Spring中,XML配置文件(之前的applicationContext.xml)的中包含多个子元素,每一个子元素定义了一个Bean。在中同样包含了多个属性以及子元素:

1.id:是一个Bean的唯一标识符

2.class:该属性指定了Bean的具体实现类

3.scope:设定Bean实例的作用域。其中比较重要的两个属性值:

        singleton(单例):无论如何实现类只有一个实例,对象在加载配置文件时创建,当应用卸载,销毁容器时,对象就被销毁了。

        prototype(原型):Spring容器会为每个对该Bean的请求都创建一个新的实例,在每次getBean时创建对象,对象长时间不用时就会被Java垃圾回收器回收。

4.property:的子元素,用于调用Bean实例中的setter方法完成属性赋值,从而完成依赖注入。该元素的name属性用于指定Bean实例中相应的属性名,ref属性传入Bean的参数为对象时使用,value属性则为传入Bean的参数为普通值使用。在property元素还有3个子元素:

        list:用于封装List或数组类型的依赖注入,用法如下

        
            
        
                123
                13
                12
        
                
            
        

        map:用于封装Map类型属性的依赖注入


    
        
        
    

        其中entry代表每一个键值对,entry元素中有key、value、key-ref、value-ref四种属性,不加-ref的为普通值,而加了-ref的为引用类型

       props:用于封装Properties类型属性的依赖注入


    
        popo
        ppopo
    
6.依赖注入

依赖注入(DI)是控制反转(Ioc)的一种方式。

以往我们在一个类中需要调用另外一个类的方法,我们会通过new被调用类来创建对象,进而调用方法,这样做会使调用类与被调用类的耦合性增加。

在Spring框架中,不需要我们再去创建对象,而是由Spring容器来创建。这就是控制反转。

换句话来说,平常我们需要哪个类就调用调用哪个类,现在在Sping中,由Spring帮我们创建对象,我们只需要写配置文件,在方法类中加载配置文件,获取对应实例再调用实例中的方法即可。

依赖注入的实现方式有两种:

1.属性注入

2.构造方法注入

3.接口注入(还未学)

第一种方式实现如下:

一、在com包下创建service包并创建UserServicce类

public interface UserService {
    public void save();
}

二、在service包内创建impl包并在impl包下创建UserServicce类的实现类UserServiceImpl

public class UserServiceImpl implements UserService {

    //声明UserDao属性
    private UserDao userDao;
    //添加UserDao属性的setteer方法,用于实现依赖注入
    public void setUserDao(UserDao userDao) {
        this.userDao =  userDao;
    }
    //实现接口中方法
    public void save() {
        //调用userDao中的save()方法
        this.userDao.save();
    }
}

三、在applicationContext.xml中的元素内配置

    

四、创建测试类Test

public class Test {
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) app.getBean("userService");
        userService.save();

    }
}

运行测试类,你会发现在调用UserServiceImpl的方法的同时也调用了UserDaoImpl的方法,而代码上的改变只是在接口实现类声明UserDao属性并添加了属性的setter方法,并在配置文件的元素内加上元素而已。

第二种方式实现(在第一种方式的基础上)如下:

一、在原有的applicationContext.xml文件中将第一种方式的配置注释,添加

    
    
        
    

二、在UserServiceImpl中把setUserDao方法注释,换为

public UserServiceImpl(UserDao userDao) {
    this.userDao = userDao;
}

额外补充         1.在applicationContext.xml中可以将Bean的依赖注入写为以下形式:


    



 但是,要用p命名空间,需要在applicationContext.xml的beans元素中写入

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

如图:

       2.在Test类中的通过容器创建实例中有两种创建方法如下:
        //两种方式创建UserService
        //第一种(根据id找到bean)
        UserService userService = (UserService) app.getBean("userService");
        //第二种(仅在applicationContext.xml中相同Class只有一个bean的情况,否则报错)
        UserService userService = app.getBean(UserService.class);
7.Bean的实例化 实例化Bean有三种方式:构造器实例化、静态工厂实例化和实例工厂方式实例化

前边依赖注入 便是构造器实例化。

第二种静态工厂实例化的实现:

1.编写工厂类并在其中创建静态的放回值为Bean的方法

2.在配置文件中编写

3.在测试类中

//1.初始化spring容器,加载配置文件
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//        System.out.println(app.getBean("bean"));

第三种实例工厂方式实例化的实现:

1.编写工厂类并在其中创建放回值为Bean的方法

2.在配置文件中编写

3.在测试类中

//1.初始化spring容器,加载配置文件
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//        System.out.println(app.getBean("bean"));

 这是我在

黑马程序员最全SSM框架教程|Spring+SpringMVC+MyBatis全套教程(spring+springmvc+mybatis)_哔哩哔哩_bilibili

学习的第一天的成果。 

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

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

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