博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring简介及配置
阅读量:3965 次
发布时间:2019-05-24

本文共 3912 字,大约阅读时间需要 13 分钟。

Spring基本


本人是个新手,写下博客用于自我复习、自我总结。

如有错误之处,请各位大佬指出。
学习资料来源于:尚硅谷


1.框架:

高度抽取可重用代码的一种设计,有高度的可通用性。

它是多个可重用模块的集合,形成一个某个领域的整体解决方案。

2.Spring简述:

Spring: 容器框架,用来简化企业级开发。 核心:IOC 和 AOP

容器:可以管理所有的组件(类)

(1)优良特性:

①非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API

②依赖注入:(IOC)反转控制最经典的实现
③面向切面编程:AOP
④容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期。
⑤组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中可以使用XML和Java注解组合这些对象。
⑥一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。

(2)IOC和DI

IOC:控制反转

(控制:资源的获取方式)
分为主动式和被动式。

主动式:要什么资源自己创建,自己new

BookServlet{	  BookService bs=new BookService();}

被动式:资源的获取不是我们自己创建,而是交给一个容器来创建和设置。容器可以自动地探查出那些组件(类)需要用到另一些组件(类);容器帮我们创建对象并赋值过去。

BookServlet{	        BookService bs;	        public void test01{	        	bs.checkout();	        }}

这就是IOC,从主动的new资源变为被动的接受资源。

DI:依赖注入 (IOC的经典实现)

容器能知道哪个组件(类)运行的时候,需要另外一个类(组件);容器通过反射的形式,将容器中准备好的BookService对象注入到BookServlet。
只要容器管理的组件,都能使用容器提供的强大功能。

3. HelloWorld:(通过各种方式给容器中注册对象)

以前是自己new对象,现在所有的对象交给容器创建;给容器注册组件。

框架编写流程:

1)导包

2)写配置
3)测试

1)导包

需要用哪个模块导哪个包。

模块划分:
①Test:Spirng的单元测试模块
②Core Container:核心容器(IOC),这部分功能由Beans、Core、Context、SpEL组成
③AOP
④Aspects
AOP+Aspects=面向切面编程模块
⑤Instrumentation:不常用
⑥Messaging:不常用
⑦Data Access/Integration:
Data Access:数据库访问模块,用作数据访问,这部分功能由JDBC、ORM、Transactions组成
Integration:集成,这部分功能由OXM、JMS组成,不常用
⑧Web:开发Web应用模块,这部分功能由WebSocket(新技术)、Servlet(和原生Web相关)、Web(开发Web项目的)、Protlet(开发Web应用的组件集成)组成

即核心容器:

spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
commons-logging-1.2.jar
Spring运行的时候依赖于一个日志包,没有这个日志包会报错。

spring的jar包 按照博文就可以安装成功:https://blog.csdn.net/ethan__xu/article/details/80273249

spring下载commons-logging :http://commons.apache.org/proper/commons-logging/

2)写配置

Spring的配置文件中,集合了spring的ioc容器管理的所有组件。

创建一个Spring Bean Configuration File(Spring的bean配置文件)

创建之后的文件内容如下:

Person文件如下:

package com.guigu.bean;public class Person {
private String lastName; private Integer age; private String gender; private String email; public String getLastName() {
return lastName; } public void setLastName(String lastName) {
this.lastName = lastName; } public Integer getAge() {
return age; } public void setAge(Integer age) {
this.age = age; } public String getGender() {
return gender; } public void setGender(String gender) {
this.gender = gender; } public String getEmail() {
return email; } public void setEmail(String email) {
this.email = email; } @Override public String toString() {
return "Person [lastName=" + lastName + ", age=" + age + ", gender=" + gender + ", email=" + email + "]"; } }

3)测试

测试文件如下:

package com.guigu.test;import static org.junit.Assert.*;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.guigu.bean.Person;public class IOCTest {
/** * 存在的几个问题: * 1)src,源码包开始的路径,称为类路径的开始; * 所有源码包里面的东西都会被合并放在类路径里面; * java,/bin/ * 2)先导包再创建配置文件 * 3)Spring的容器接管了标志了s的类 * 4)几个细节: * ①ApplicationContext(IOC容器的接口) * 里面的ClassPathXmlApplicationContext("ioc.xml"):ioc容器的配置文件在类路径下; * 里面的FileSystemXmlApplicationContext("F://ioc.xml"):ioc容器的配置文件在磁盘路径下; * ②给容器中注册一个组件,我们也从其中按照id拿到了这个组件的对象。 * 组件的创建工作,是容器完成的。 * Person对象(容器中的对象)是在创建容器完成的时候就已经创建完成了。 * ③同一个组件在ioc容器中是单实例的,而且在容器启动完成之前都已经创建好了。 * ④容器中如果没有这个组件,获取组件就会失败。 * ⑤ioc容器在创建这个组件对象的时候,(property)会利用setter方法为javaBean的属性进行赋值。 * ⑥javaBean的属性名是由getter/setter方法决定的,不是通过private String lastName;决定的 * 即set去掉后面那一串首字母小写就是属性名。 * 所以建议所有的getter和setter都自动生成。 */ /** * 从容器中拿到这个组件 */ @Test public void test() {
//ApplicationContext:代表ioc容器 //ClassPathXmlApplicationContext:当前应用的xml配置文件在ClassPath下 //根据spring的配置文件得到ioc容器对象 ApplicationContext ioc=new ClassPathXmlApplicationContext("ioc.xml"); //创建对象是容器做的 Person bean=(Person)ioc.getBean("person01"); System.out.println(bean); }}
你可能感兴趣的文章
Android(视频、图片)加载和缓存类库Glide
查看>>
Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
查看>>
Android音频系统之AudioPolicyService
查看>>
Android系统Root与静默安装
查看>>
Android Property实现介绍
查看>>
Android SystemProperties设置/取得系统属性的用法总结
查看>>
Android 休眠 FLAG_KEEP_SCREEN_ON
查看>>
Android添加onKeyLongPress事件
查看>>
Android使用Contact数据模型来批量插入联系人
查看>>
使用微信api将内容分享给好友,或者发送到朋友圈
查看>>
百度地图SDK坐标传入导航sdk 示例
查看>>
免费的sip账号
查看>>
android开发中输入法的弹出和隐藏
查看>>
Android 如何在自定义界面上启用输入法 (How to enable inputmethod for the custom UI)
查看>>
Android MediaCodec小结
查看>>
详解YUV数据格式
查看>>
YUV格式说明
查看>>
MediaCodec and Camera: colorspaces don't match
查看>>
How to use Android MediaCodec encode Camera data(YUV420sp)
查看>>
android adb 读写模式 挂载文件系统
查看>>