Java之Spring学习

1. 首先知道Spring是个什么.

Spring是分层的一个轻量级开源框架. 以反转控制IOC, 和面向切面变成AOP为内核. 提供了展现层spring MVC, 持久层Spring JDBC以及业务层事务管理等众多企业级应用技术.

Spring一直贯彻并遵守:好的设计优于具体实现, 代码应该易于测试. 所以Spring提供了IOC容器, 将对象之间的依赖关系交给spring来控制,避免硬编码造成了过度耦合. 通过Spring提供的AOP功能, 用户可以通过面向切面变成代替一些 使用面向对象编程比较困难的问题.

2. Spring体系结构(框架结构)

3. Spring中各个注解的作用 以及其使用方式.

@Component------------------------泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。(Component-------成分; 组分; 零件)

@Resource------------------------(资源)

@Autowired-----------------------(自动绑定)

@Repository-----------------------于标注数据访问组件,即DAO组件(repository-------仓库; 贮藏室,容器。)

@Service----------------------------用于标注业务层组件(我们通常定义的service层就用这个)

@Controller-------------------------用于标注控制层组件(如struts中的action)

在编写code的时候, 可以将上述注解放在对应的类, 方法, 构造函数, 实体变量之前, Spring机制会去扫描这些标记并且进行装配.

一般在resources文件夹内存放一个配置文件, 叫applicationContext.xml文件.

其中<context:component-scan base-package=”com.eric.spring”>表示扫描类包, 将标注Spring的注解的类自动转化Bean, 同时完成Bean的注入.

注入方式一般是将DAO的实现类注入到service的实现类当中, 将service的接口(注意不是service的实现类)注入到action中.然后属性加上@Autowired后不需要getter()和setter()方法,Spring也会自动注入。

实体变量,方法, 构造函数的注入一般用 @Resource 或者 @Autowired , 这些变量在配置文件中会随着类一起注入并转化成bean, 这么做的方便之处在于可以省略setter方法.

4. Spring核心之IOC控制反转.

Spring通过一个配置文件描述了Bean和Bean之间的依赖关系, 利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系.

5. 下面来看看如何装配一个Bean.

在Spring容器的配置文件中, 定义一个简单的Bean的配置片段, 如下:

一般情况下, 一个Spring IOC的bean即对应文件中的一个bean,其中id为这个bean的名称, 通过容器的getBean("foo")即可获取对应的Bean, 在容器中起到一个定位和查找的作用, 是外部程序和Spring IOC得一个桥梁.Class属性指定了Bean对应的实现的类.

id在IOC容器中必须是唯一的,id必须符合xml的命名规范,即必须以字母为开始, 后面可以使字母数字连字符下划线句号冒号等完整结束符.

也可以使用name属性, 但是由于name属性的名字可以不遵守命名规范而且同一个IOC容器中可以有多个重复名字的bean, 那么只有最后的那个Bean会生效, 前面的Bean则会被覆盖. 所以尽量推荐用id命名bean.

6. 依赖注入.

6.1 属性注入

属性注入是一个非常常用的注入方式. 要求被注入的bean有一个默认的构造方法, 并且被注入的属性要有setter的方法. Spring会通过默认的构造方法实例化一个Bean, 并通过反射的方式注入属性值.

如果一个Bean已经有了一个带参数的构造方法 ,则必须同时提供一个不带参数的默认构造方法. 否则在属性注入时候会抛出异常.下图是一个属性注入的ioc片段:

6.2 构造方法注入.

首先看有两个构造函数:

IOC片段怎么写:

构造方法注入的时候一般要将参数指定出index, typoe以及value确定注入的是指定的构造方法.

6.3 循环依赖注入

指的是注入两个bean之间存在彼此依赖关系.这样就陷入了死循环

6.4 IOC容器中引用其他的bean.

照例,先看一个IOC段:

这里可以看到 boss bean中的属性 引用了car bean, 通过ref元素.

所以这里要说一下ref元素应用bean的方式:

1. 通过bean属性引用当前容器或者父容器的bean, 这个是最常见的方式.

2. 通过local属性引用同一个配置文件的bean, 他可以用xml解析器来检验引用的合法性, 以便开发者在编程阶段就可以检查出自己的错误.

3. parent属性,用于引用父容器的bean

举一个父子容器,子容器引用父容器的例子:

6.5 使用p命名空间简化属性注入的xml配置

首先看看未使用p命名空间的属性注入IOC片段:

使用p命名空间后, 属性注入会简化很多:

6.6 Spring中Bean的作用域

如图:

6.7 AnnotationConfigApplicationContext 用于启动Spring容器.

6.8 下面的表格表示了三种配置bean的区别

这些配置没有优劣,只有适合的使用场景

原文地址:https://www.cnblogs.com/it-dennis/p/8976171.html

时间: 2024-10-03 08:13:49

Java之Spring学习的相关文章

[Java] Eclipse+Spring学习(一)环境搭建

转自:http://blog.sina.com.cn/s/blog_7c3736810100qhia.html 最近由于投了一家公司实习,他要java工程师,而我大学3年的精力都花到了ASP.NET和前端上面,到找工作的时候才发现大公司不要.NET的,所以马上转型java...由于网上的高手都不屑于写这类文章,或者写了都是比较模糊的,如果要快速入手比较费时间了,至少得多看几篇. 开发环境:eclipse-SDK-3.6-win32,spring-framework-2.5.6(已经有3.0.5的

java的Spring学习1--spring引用及属性(setter,getter)注入

1.目录结构 项目->src->main->java->com.test.ppmoney 设置java文件夹为代码  在Project Structure 里的 Modules里 选择相应的目录 后点击 Sources菜单 项目->src->main->resources 设置resources 文件夹为资源  在Project Structure 里的 Modules里 选择相应的目录 后点击 Resources菜单 2. 在依赖文件 pom.xml里添加 sp

java的Spring学习2- junit

1.maven依赖 <?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

Java框架spring学习笔记(十八):事务操作

事务操作创建service和dao类,完成注入关系 service层叫业务逻辑层 dao层单纯对数据库操作层,在dao层不添加业务 假设现在有一个转账的需求,狗蛋有10000元,建国有20000元,狗蛋向建国转账1000元钱. 编写service层创建业务逻辑,OrderService.java 1 import cn.dao.OrderDao; 2 3 public class OrderService { 4 private OrderDao orderDao; 5 6 public voi

Java框架spring 学习笔记(二十):事务管理(注解管理)

注解管理的方式要比xml配置方式要简单很多 只需在配置文件中添加事务注解 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:tx="http://www.springframework.org/schema/tx" 4 xmlns:aop=&

第65节:Java后端的学习之Spring基础

Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api)-springFramework. 各种学习的知识点: spring expression language spring integration spring web flow spring security spring data spring batch spring网站: http://sp

Spring学习(13)--- 基于Java类的配置Bean 之 @Configuration &amp; @Bean注解

基于Java配置选项,可以编写大多数的Spring不用配置XML,但有几个基于Java的注释的帮助下解释.从Spring3.0开始支持使用java代码来代替XML来配置Spring,基于Java配置Spring依靠Spring的JavaConfig项目提供的很多优点.通过使用@Configuration, @Bean ,@Import ,@DependsOn 来实现Java配置Spring. 1) @Configuration & @Bean 注解: 在Spring的新的Java-Configu

Java程序猿学习当中各个阶段的建议

回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对