黑马程序员技术交流社区

标题: Spring框架学习与使用(一) [打印本页]

作者: 逆风TO    时间: 2020-1-6 10:04
标题: Spring框架学习与使用(一)
本帖最后由 逆风TO 于 2020-1-6 10:19 编辑

一、Spring概述
1.1 框架概述

框架是一个封装了很多功能和模块的程序半成品。可以理解是一个由很多工具类组合成的一个工具包。
1.2 Spring是什么
Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架。是Java开发的灵魂框架。
Spring有两大内核:
IOC:(Inverse Of Control:控制反转)
AOP:(Aspect Oriented Programming:面向切面编程)
1.3 Spring功能
IOC:控制反转。就是我们不在创建对象,把对象的创建权,交给spring,由Spring负责给我们创建对象。
DI: 依赖注入。就是给对象的成员变量赋值。
AOP:面向切面编程,底层就是动态代理。
事务: Spring提供了声明式事务,也就是说,我们可以通过配置的方式来添加事务。
二、Spring快速入门
2.1 Spring程序开发步骤

1 导入 Spring 开发的基本包坐标
2 编写 Dao 接口和实现类
3 创建 Spring 核心配置文件
4 在 Spring 配置文件中配置 UserDaoImpl
5 使用 Spring 的 API 获得 Bean 实例
[Java] 纯文本查看 复制代码
<!-- pom.xml中根据自己的版本配置 -->
<properties>
        <spring.version>5.0.5.RELEASE</spring.version>
</properties>
<!--导入spring的context坐标,context依赖core、beans、expression-->
<dependencies>
    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
</dependencies>

2.3 编写Dao接口和实现类
[Java] 纯文本查看 复制代码
public interface UserDao {  
    public void find();
}

public class UserDaoImpl implements UserDao {  
    @Override  
    public void find() {
        System.out.println("UserDao find method running....");
        }
}

2.4 创建Spring核心配置文件

2.5 在Spring配置文件中配置UserDaoImpl
[Java] 纯文本查看 复制代码
<beans xmlns="http://www.springframework.org/schema/beans"                                                                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
                    http://www.springframework.org/schema/beans                                                                           http://www.springframework.org/schema/beans/spring-beans.xsd">
   
   <!-- 配置UserDaoImpl -->
   <bean id="userDao" class="www.baidu.dao.impl.UserDaoImpl"></bean>
   
</beans>

2.6 使用Spring的API获得Bean实例
[AppleScript] 纯文本查看 复制代码
@Test 
public void test1(){
    //加载spring配置文件。获取spring核心容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    //获取spring容器中的userDao对象
    UserDao userDao = (UserDao) ac.getBean("userDao");
    //调用方法
    userDao.find();
}

三、Spring配置文件

3.1 Bean标签基本配置

[AppleScript] 纯文本查看 复制代码
<bean id="userDao" class="www.baidu.dao.impl.UserDaoImpl"></bean>

id:Bean实例在Spring容器中的唯一标识
class:Bean的全限定名称


3.2 Bean标签范围配置

[Java] 纯文本查看 复制代码
<bean id="userDao" class="www.baidu.dao.impl.UserDaoImpl" scope="singleton" ></bean>

scope:指对象的作用范围,取值如下:


3.3 Bean生命周期配置


init-method:指定类中的初始化方法名称,当对象被创建时,调用该方法。

destroy-method:指定类中销毁方法名称,当对象被销毁时,调用该方法。

3.4 Bean实例化三种方式

1 使用无参构造方法实例化

默认调用无参构造方法创建对象,如果bean中没有默认无参构造函数,将会创建失败

[Java] 纯文本查看 复制代码
<bean id="userDao" class="www.baidu.dao.impl.UserDaoImpl"/>

[Java] 纯文本查看 复制代码
<bean id="userDao" class="www.baidu.factory.StaticFactoryBean" factory-method="createUserDao" />


[Java] 纯文本查看 复制代码
//工厂类
public class DynamicFactoryBean {  
    //非静态方法,需要先创建工厂类的对象,再通过对象调用该方法,获取对象
        public UserDao createUserDao(){        
                return new UserDaoImpl();
        }
}


[Java] 纯文本查看 复制代码
<!-- 创建工厂类的对象 -->
<bean id="factoryBean" class="www.baidu.factory.DynamicFactoryBean"/>
<!-- 通过工厂类的对象,调用createUserDao方法,获取UserDao对象 -->
<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>



作者: zhaosongzhi    时间: 2020-1-6 11:03
相信自己,加油!
作者: 小公举    时间: 2020-1-6 11:08
感谢楼主的分享   万分感谢
作者: zhaosongzhi    时间: 2020-1-6 11:12
相信自己,加油!
作者: zhanghua342    时间: 2020-1-6 11:23

作者: lzq123    时间: 2020-1-6 11:28
666666666666666666666666666666666666666666666
作者: zhaosongzhi    时间: 2020-1-6 11:28
666666666666666666666666666666
作者: 王锦    时间: 2020-1-6 11:34
6666666666666666666666
作者: 九月丫    时间: 2020-1-6 11:34
优秀。。。。。。
作者: zhaosongzhi    时间: 2020-1-6 11:36
学习到很多
作者: 霍尔    时间: 2020-1-6 11:38
棒棒的!加油
作者: zhaosongzhi    时间: 2020-1-6 11:45
学习到很多
作者: zhaosongzhi    时间: 2020-1-6 11:55
学习到很多
作者: 半个程序员    时间: 2020-1-6 12:06
2020扬帆起航。。。
作者: 逆风TO    时间: 2020-1-6 18:19
相信自己,加油!
作者: 王微    时间: 2020-1-6 18:25
相信自己,加油!
作者: 孙丽    时间: 2020-1-6 18:29
6666666666
作者: dendi    时间: 2020-1-6 20:36
666666666666666666666
作者: 你不爱我    时间: 2020-1-6 20:47
学计算机哪家强,就来西安黑马程序员
作者: 半个程序员    时间: 2020-1-6 20:57
学计算机哪家强,就来西安黑马程序员
作者: 举个栗子    时间: 2020-1-6 21:07
黑马程序员6666666666666666666
作者: ruoquan    时间: 2020-1-6 21:17
优秀66666666666666666666666
作者: 咨询部王丹    时间: 2020-1-7 09:42
加油,加油                                         
作者: hongping    时间: 2020-1-7 09:47

学计算机哪家强,就来西安黑马程序员
作者: daoqin    时间: 2020-1-7 09:57

学计算机哪家强,就来西安黑马程序员
作者: 大安    时间: 2020-1-7 10:08

学计算机哪家强,就来西安黑马程序员
作者: 大安    时间: 2020-1-7 10:12

学计算机哪家强,就来西安黑马程序员
作者: 温柔一刀!喵!    时间: 2020-1-7 10:30
辛苦分享~~~~~
作者: 李娟玲老师    时间: 2020-1-7 10:50
棒棒哒!加油
作者: duanshaobo    时间: 2020-1-7 11:31
六六六六六六六六
作者: zhuyanting    时间: 2020-1-7 11:53
走过路过不要错过
作者: sdjadyhm    时间: 2020-1-7 16:15
厉害!棒棒哒加油~
作者: 哦嗨呦    时间: 2020-1-8 11:24
好人一生平安
作者: lvxinvip    时间: 2020-1-8 17:50

作者: manyihang    时间: 2020-1-8 18:36
66666666666666666666666666666
作者: 耙丫丫    时间: 2020-1-8 19:19
66666666666666666666
作者: 黑马程序员啊    时间: 2020-1-8 20:43
666666666666666666666
作者: fujiangbo    时间: 2020-1-8 20:57
666666666666666666666
作者: jsnoob    时间: 2020-1-8 21:32
加油,加油,加油!!!!
作者: zplxwl    时间: 2020-1-9 00:21
相信自己,加油!
作者: Emmmmm~    时间: 2020-1-9 10:23
加油加油
作者: 殷凯老师    时间: 2020-1-9 10:41
2020扬帆起航。。。
作者: yujq    时间: 2020-1-9 13:25
666666666666666666
作者: 宗进1    时间: 2020-1-9 14:56
6666666666666666666666666
作者: 八戒猪    时间: 2020-1-9 19:24
厉害  
作者: 逆风TO    时间: 2020-1-10 10:18
加油哦~
作者: 大智叔叔    时间: 2020-1-10 10:24

为千万学子而著书,66666
作者: 专找bug    时间: 2020-1-10 10:32
相信自己,加油!
作者: hello!!!    时间: 2020-1-10 10:35

作者: 爱笑的姑娘    时间: 2020-1-10 11:00
6666666666666666666666666666666
作者: 我爱我1022    时间: 2020-1-10 12:32

作者: 零度☆黎明    时间: 2020-1-10 12:35
感谢分享.................... ..................
作者: kdhdjdj    时间: 2020-1-10 12:45

学习到很多
作者: 1467584    时间: 2020-1-10 13:06

学习到很多
作者: longyu3    时间: 2020-1-10 13:36
用代码来总结不失为一种很好的方式
作者: json0314    时间: 2020-1-10 13:55
赞赞赞!!!
作者: 影@子~    时间: 2020-1-10 13:57
感谢分享
作者: 竹竹竹竹    时间: 2020-1-10 14:09
感谢分享
作者: majie    时间: 2020-1-10 14:16
OMG
作者: mydorling11    时间: 2020-1-10 21:18
666666666666666666666666
作者: 雨落轻舟    时间: 2020-1-11 11:14
总结的不错,继续努力
作者: 素问    时间: 2020-1-11 14:12
努力奋斗,加油,学到很多
作者: 逆风TO    时间: 2020-1-14 12:08
zhaosongzhi 发表于 2020-1-6 11:03
相信自己,加油!

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:08
小公举 发表于 2020-1-6 11:08
感谢楼主的分享   万分感谢

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:08
小公举 发表于 2020-1-6 11:08
感谢楼主的分享   万分感谢

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:08
zhaosongzhi 发表于 2020-1-6 11:12
相信自己,加油!

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:08
你不爱我 发表于 2020-1-6 20:47
学计算机哪家强,就来西安黑马程序员

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:08
半个程序员 发表于 2020-1-6 20:57
学计算机哪家强,就来西安黑马程序员

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:10
zhaosongzhi 发表于 2020-1-6 11:28
666666666666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:10
lzq123 发表于 2020-1-6 11:28
666666666666666666666666666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:10
zhaosongzhi 发表于 2020-1-6 11:28
666666666666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:10
九月丫 发表于 2020-1-6 11:34
优秀。。。。。。

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:10
半个程序员 发表于 2020-1-6 12:06
2020扬帆起航。。。

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:10
王微 发表于 2020-1-6 18:25
相信自己,加油!

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:10
lzq123 发表于 2020-1-6 11:28
666666666666666666666666666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
王锦 发表于 2020-1-6 11:34
6666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
半个程序员 发表于 2020-1-6 12:06
2020扬帆起航。。。

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
zhaosongzhi 发表于 2020-1-6 11:45
学习到很多

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
霍尔 发表于 2020-1-6 11:38
棒棒的!加油

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
zhaosongzhi 发表于 2020-1-6 11:45
学习到很多

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
zhanghua342 发表于 2020-1-6 11:23

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
lzq123 发表于 2020-1-6 11:28
666666666666666666666666666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
举个栗子 发表于 2020-1-6 21:07
黑马程序员6666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
ruoquan 发表于 2020-1-6 21:17
优秀66666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
fujiangbo 发表于 2020-1-8 20:57
666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
jsnoob 发表于 2020-1-8 21:32
加油,加油,加油!!!!

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
举个栗子 发表于 2020-1-6 21:07
黑马程序员6666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
咨询部王丹 发表于 2020-1-7 09:42
加油,加油

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
hongping 发表于 2020-1-7 09:47
学计算机哪家强,就来西安黑马程序员

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
daoqin 发表于 2020-1-7 09:57
学计算机哪家强,就来西安黑马程序员

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
大安 发表于 2020-1-7 10:12
学计算机哪家强,就来西安黑马程序员

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
温柔一刀!喵! 发表于 2020-1-7 10:30
辛苦分享~~~~~

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:11
李娟玲老师 发表于 2020-1-7 10:50
棒棒哒!加油

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:12
李娟玲老师 发表于 2020-1-7 10:50
棒棒哒!加油

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:12
duanshaobo 发表于 2020-1-7 11:31
六六六六六六六六

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:12
ruoquan 发表于 2020-1-6 21:17
优秀66666666666666666666666

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:12
hongping 发表于 2020-1-7 09:47
学计算机哪家强,就来西安黑马程序员

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:12
咨询部王丹 发表于 2020-1-7 09:42
加油,加油

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:12
hongping 发表于 2020-1-7 09:47
学计算机哪家强,就来西安黑马程序员

加油哦~
作者: 逆风TO    时间: 2020-1-14 12:12
Emmmmm~ 发表于 2020-1-9 10:23
加油加油

加油哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2