Spring第一讲:初步了解Spring
一、什么是Spring,什么是bean?
Spring是一种框架,Spring框架主要提供了IoC容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。每一个没Spring管理的 Java对象都称之为bean
.利用Spring容器管理Bean方法:
- 采用Spring配置文件管理Bean
- 利用注解精简Spring配置文件
- 利用注解配置类取代Spring配置文件
- 利用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相关推荐
- boot入门思想 spring_(第一讲)Spring Initializr-快速入门Spring Boot的最好选择
1讲:Spring Initializr-快速入门Spring Boot的最好选择 Spring Initializr [http://start.spring.io/]是引导你快速构建Spring ...
- Spring入门第一讲——Spring框架的快速入门
Spring的概述 什么是Spring? 我们可以从度娘上看到这样有关Spring的介绍: 说得更加详细一点,Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架, ...
- Spring Boot 专栏:HelloWord快速入门(第一讲)
写在前面的话: 没有好的文采,但是有一颗乐于分享心,希望用最精简的语言,描绘每一个demo的构建过程,为开发者提供最容易上手的demo样例. SpringBoot简介 Spring Boot来简化Sp ...
- 小米手机超越苹果,成欧洲第二;马斯克特斯拉内部邮件:痛恨开会,少讲黑话;Spring 6.0 发布|极客头条
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- 小米手机超越苹果,成欧洲第二;马斯克特斯拉内部邮件:痛恨开会,少讲黑话;Spring 6.0 发布|极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- 孙帅suns的Spring第一集总结
-----------------[B站孙帅suns的Spring源码第一集总结] 对Spring生态的认知 1.对Spring的认知 1.时至今日我们认为Spring可能就是 解决方案.技术栈.全家 ...
- 注解赋值可以是方法_P7笔记,把Spring注解讲的明明白白
关注公众号领取海量架构师资料 环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,添加一个spring-context的包,也是实际开发中 ...
- 初步认识spring mvc
spring mvc 01 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求 ...
- Java 第一大框架:Spring 的 IoC 跟 AOP 雏形如何实现?
Spring Spring make java more simple: Spring make java more modern: Spring make java more reactive: S ...
最新文章
- 关于Iframe之间以及与父窗体的值传递
- 如何搭建一个功能复杂的前端配置化框架(一)
- php引入路径配置,require.js的路径配置和css的引入方法详解
- 【Python】20个小技巧,让数据可视化图表更专业!
- [leetcode] 101. 对称二叉树
- 关于EF使用脏读(连接会话开始执行设置隔离级别)
- 《转》请放下你的无效社交
- C语言 | 结构体数组
- 巡回沙龙_美浮特全国巡回沙龙第一期结束撒花!
- 实用设置_华为手机4个冷门实用的设置,都知道的绝对是资深花粉
- CCF NOI1058 统计单词
- web.xml中/和/*的区别
- Server 2003 终端超过了最大允许连接数解决
- eclipse中的ctrl+H使用中的问题
- Linux中ssh远程登录服务、SSH免密登录
- Python规范:用用assert
- 威纶触摸屏和台达b2伺服通讯,含程序案例资料
- 23andme的申请流程和注意事项
- RVDS-RealView Development Suite 4 0 Professional软件
- dnf游戏服务器不稳定,卡顿时代将终结?DNF策划针对跨区服务器卡顿回应
热门文章
- IOS消息机制-委托(ptotocol与delegate)
- C# 3.X -- the newest features
- [Machine Learning]--无监督学习
- stk软件支持Linux,STK组件基础篇:开发入门
- python全栈工程师薪水_不止 20K,Python 工程师薪资再飙升(内附转型指南)
- 11.3 人工合成数据-机器学习笔记-斯坦福吴恩达教授
- u-boot分析之内核启动(五)
- 【需求】手机无线投屏到电视需求整理,Miracast无线投屏功能应用及需求
- 降息大法好!银行4.35%消费贷了解一下?
- uboot添加自定义命令