一、什么是Spring,什么是bean?

Spring是一种框架,Spring框架主要提供了IoC容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。每一个没Spring管理的 Java对象都称之为bean

.利用Spring容器管理Bean方法:

  1. 采用Spring配置文件管理Bean
  2. 利用注解精简Spring配置文件
  3. 利用注解配置类取代Spring配置文件
  4. 利用Java配置类管理Bean

二、今天我们要学习的内容

采用Spring配置文件管理Bean

三、创建项目

创建好项目后,第一步在pom文件里面添加相关的依赖

附上pom文件代码:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.lbd.spring</groupId><artifactId>SpringDemo2020</artifactId><version>1.0-SNAPSHOT</version><properties><!-- spring.version --><spring.version>5.3.4</spring.version></properties><dependencies><!--Spring核心--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><!--Spring Bean--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><!--Spring容器--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!--Spring测试--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency></dependencies>
</project>

新建包net.lbd.spring.lesson01

在新建的包下面新建SlayDragonQuest类文件

在新建BraveKnight类文件

BraveKnight里面的代码  :

package net.lbd.spring.lesson01;public class BraveKnight {private SlayDragonQuest slayDragonQuest;public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {this.slayDragonQuest = slayDragonQuest;}public void embarkOnQuest(){slayDragonQuest.embark();}
}

在test/java下面新建一个表

在新建好的包下面新建TestbraveKnight类文件

TestbraveKnight里面的代码:

package net.lbd.spring.lesson01;import org.junit.Test;public class TestBraveKnightOld {@Testpublic void testBraveKnight(){//创建杀龙任务SlayDragonQuest slayDragonQuest = new SlayDragonQuest();//创建勇敢骑士对象BraveKnight braveKnight = new BraveKnight();//设置勇敢骑士的杀龙任务属性braveKnight.setSlayDragonQuest(slayDragonQuest);//勇敢骑士执行任务braveKnight.embarkOnQuest();}
}

创建log4.properties文件

log4.properties文件代码:

log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

进去名字随意,点击OK

代码:

<?xml version="1.0" encoding="UTF-8"?>
<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"><bean id="slayDragonQuest" class="net.lbd.spring.lesson01.SlayDragonQuest"/><bean id="Mike" class="net.lbd.spring.lesson01.BraveKnight"><property name="slayDragonQuest" ref="slayDragonQuest"/></bean></beans>

创建类文件

代码:

package net.lbd.spring.lesson01;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能:采用Spring容器测试勇敢骑士类*/public class TestBraveKnightNew {private ClassPathXmlApplicationContext context;//基于类路径XML配置文件的应用容器@Beforepublic void init(){//基于类路径配置文件的应用容器context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");//提示用户System.out.println("Spring应用容器已经创建!");}@Testpublic void testBraveKnight(){//根据名称从应用容器中获取勇敢骑士对象BraveKnight braveKnight = (BraveKnight) context.getBean("Mike");//勇敢骑士执行任务BraveKnight.embarkOnQuest();}@Afterpublic void destroy(){context.close();//提示用户System.out.println("Spring应用容器已经关闭!");}
}

运行测试方法,查看结果

在spring配置文件里面在创建两个勇敢骑士bean

修改测试类

运行查看结果

新建这俩个类

代码:

package net.lbd.spring.lesson01;
/*** 功能:拯救少女任务类* 作者:* 日期:*/
public class RescueDamselQuest {public void embark() {System.out.println("执行拯救少女任务。");}
}
package net.lbd.spring.lesson01;/*** 功能:拯救少女骑士类* 作者:* 日期:*/
public class DamselRescuingKnight {private RescueDamselQuest rescueDamselQuest;public DamselRescuingKnight(RescueDamselQuest rescueDamselQuest) {this.rescueDamselQuest = rescueDamselQuest;}public void embarkOnQuest() {rescueDamselQuest.embark();}
}

在Spring配置文件里创建拯救少女骑士Bean

附上代码:

<bean id="rescueDamselQuest" class="net.lbd.spring.lesson01.RescueDamselQuest"/>
<bean id="damselRescuingKnight" class="net.lbd.spring.lesson01.DamselRescuingKnight"><constructor-arg ref="rescueDamselQuest"/>
</bean>

创建TestDamselRescuingKnightOld

附上代码:

package net.lbd.spring.lesson01;import net.lbd.spring.lesson01.DamselRescuingKnight;
import net.lbd.spring.lesson01.RescueDamselQuest;
import org.junit.Test;/*** 功能:采用传统方式测试拯救少女骑士类* 作者:* 日期:*/
public class TestDamselRescuingKnightOld {@Testpublic void testDamselRescuingKnight() {// 创建拯救少女任务对象RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();// 创建拯救少女骑士对象DamselRescuingKnight damselRescuingKnight = new DamselRescuingKnight(rescueDamselQuest);// 拯救少女骑士执行任务damselRescuingKnight.embarkOnQuest();}
}

运行测试,查看结果

附上代码:

package net.lbd.spirng.lesson01;

import net.lbd.spring.lesson01.DamselRescuingKnight;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 功能:采用Spring容器测试拯救少女骑士类
 * 作者:
 * 日期:
 */
public class TestDamselRescuingKnightNew {
    private ClassPathXmlApplicationContext context;

@Before
    public void init() {
        // 基于Spring配置创建应用容器
        context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
    }

@Test
    public void testDamselRescuingKnight() {
        // 根据名称从应用容器里获取拯救少女骑士对象
        DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight) context.getBean("damselRescuingKnight");
        // 拯救少女骑士执行任务
        damselRescuingKnight.embarkOnQuest();
    }

@After
    public void destroy() {
        // 关闭应用容器
        context.close();
    }
}

执行查看结果

Spring第一讲:初步了解Spring相关推荐

  1. boot入门思想 spring_(第一讲)Spring Initializr-快速入门Spring Boot的最好选择

    1讲:Spring Initializr-快速入门Spring Boot的最好选择 Spring Initializr [http://start.spring.io/]是引导你快速构建Spring ...

  2. Spring入门第一讲——Spring框架的快速入门

    Spring的概述 什么是Spring? 我们可以从度娘上看到这样有关Spring的介绍: 说得更加详细一点,Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架, ...

  3. Spring Boot 专栏:HelloWord快速入门(第一讲)

    写在前面的话: 没有好的文采,但是有一颗乐于分享心,希望用最精简的语言,描绘每一个demo的构建过程,为开发者提供最容易上手的demo样例. SpringBoot简介 Spring Boot来简化Sp ...

  4. 小米手机超越苹果,成欧洲第二;马斯克特斯拉内部邮件:痛恨开会,少讲黑话;Spring 6.0 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  5. 小米手机超越苹果,成欧洲第二;马斯克特斯拉内部邮件:痛恨开会,少讲黑话;Spring 6.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  6. 孙帅suns的Spring第一集总结

    -----------------[B站孙帅suns的Spring源码第一集总结] 对Spring生态的认知 1.对Spring的认知 1.时至今日我们认为Spring可能就是 解决方案.技术栈.全家 ...

  7. 注解赋值可以是方法_P7笔记,把Spring注解讲的明明白白

    关注公众号领取海量架构师资料 环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,添加一个spring-context的包,也是实际开发中 ...

  8. 初步认识spring mvc

    spring mvc 01 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求 ...

  9. Java 第一大框架:Spring 的 IoC 跟 AOP 雏形如何实现?

    Spring Spring make java more simple: Spring make java more modern: Spring make java more reactive: S ...

最新文章

  1. 关于Iframe之间以及与父窗体的值传递
  2. 如何搭建一个功能复杂的前端配置化框架(一)
  3. php引入路径配置,require.js的路径配置和css的引入方法详解
  4. 【Python】20个小技巧,让数据可视化图表更专业!
  5. [leetcode] 101. 对称二叉树
  6. 关于EF使用脏读(连接会话开始执行设置隔离级别)
  7. 《转》请放下你的无效社交
  8. C语言 | 结构体数组
  9. 巡回沙龙_美浮特全国巡回沙龙第一期结束撒花!
  10. 实用设置_华为手机4个冷门实用的设置,都知道的绝对是资深花粉
  11. CCF NOI1058 统计单词
  12. web.xml中/和/*的区别
  13. Server 2003 终端超过了最大允许连接数解决
  14. eclipse中的ctrl+H使用中的问题
  15. Linux中ssh远程登录服务、SSH免密登录
  16. Python规范:用用assert
  17. 威纶触摸屏和台达b2伺服通讯,含程序案例资料
  18. 23andme的申请流程和注意事项
  19. RVDS-RealView Development Suite 4 0 Professional软件
  20. dnf游戏服务器不稳定,卡顿时代将终结?DNF策划针对跨区服务器卡顿回应

热门文章

  1. IOS消息机制-委托(ptotocol与delegate)
  2. C# 3.X -- the newest features
  3. [Machine Learning]--无监督学习
  4. stk软件支持Linux,STK组件基础篇:开发入门
  5. python全栈工程师薪水_不止 20K,Python 工程师薪资再飙升(内附转型指南)
  6. 11.3 人工合成数据-机器学习笔记-斯坦福吴恩达教授
  7. u-boot分析之内核启动(五)
  8. 【需求】手机无线投屏到电视需求整理,Miracast无线投屏功能应用及需求
  9. 降息大法好!银行4.35%消费贷了解一下?
  10. uboot添加自定义命令