Spring核心模块知识梳理

电脑杂谈  发布时间:2020-03-09 17:00:33  来源:网络整理

spring 组件_spring boot logback-spring.xml_spring 组件

Spring的一些概念跟思想

Spring的核心:AOP、IOC。

简单点说,就是把对象交给Spring进行管控,通过面向切面编程来推动一些"模板式"的操作,使得程序员解放出来,可以非常关注业务推动。

Spring已经是一站式的开源框架解决方案spring 组件,而且产生了Spring生态。

关于IOC

IOC,从操作上来看,要么通过XML配置实现,要么通过注解的方法推动。在实际研发中,越来越流行注解的方法。

需要按照你使用到的用途,来进行依赖的引进,以及XML的Schema约束引用。

Spring的核心配置文件,名称跟位置不固定,不过在实际开发中,一般指定为applicationContext-xxx.xml的方法。这种形式,有2个好处:第一,可以对Spring的配置文件进行分组件管理;第二,由于统一的前缀,方便正则加载某些配置文件。

Spring

bean的XML配置创建

直接通过来进行,这样的前提是该类存在无参数的构造方法(背后的机理就是通过反射实例化的)。这种方法是实际中更常使用的,当然,除此之外还存在静态工厂、实例工厂的方法构建。

spring 组件_spring 组件_spring boot logback-spring.xml

另外一点还必须注意的是:bean是单例的,还是多例的?

bean标签中存在scope属性用于表明:

singleton:单例,default

prototype:多例

request/session等。

bean的属性注入:XML模式

bean的XML建立是借助反射进行,那么bean的属性注入,是怎样进行的呢?

可以在构造bean的之后,提供有参数的构造方式进行修改;

可以在提供setter方法,进行修改;(最常用)

什么接口注入,什么P名称空间注入,这些实际都不用……

或者

要么利用value直接给出属性值,要么通过ref引用另一个bean。

spring 组件_spring boot logback-spring.xml_spring 组件

基于注解方式的bean创建或者注入

因为Spring注解的谋求是必须AOP的支持,因此在依赖方面必须留意,其次spring 组件,要在XML中进入注解扫描:

实际上这个配置,会使Spring在指定包下扫描,把带有注释标识的bean实例化,并且会进行属性注入。(你可以参考《写出我的第一个框架:迷你版Spring MVC》)

创建对象的4个注解:

@Component/@Controller/@Service/@Repository

在这4个注解上,通过value属性来指定bean的id,通过@scope配合来声明单例OR多例。(目前这4个注解功能是一样的,只是为了使标注类的种类非常清晰,而且Spring留了一手,以后说不定会提高功能呢?)

如何注入属性?

@Autowired/@Resource/@Qualifier

需要注意的是@Resource是javax包下的,说白了就是J2EE提供的;而@Autowired是Spring提供的。(不必提供setter方法)

@Resource默认根据名称注入,如果找不到才根据类型注入。

@Autowired默认根据类别注入,可以结合@Qualifier进行名称注入。

那么我们必须注意哪些呢?

spring 组件_spring 组件_spring boot logback-spring.xml

如果@Autowired进行类型注入,很可能类型会有多个满足(多态),那么究竟注入哪个呢?所以说,如果根据@Autowired类型注入,一定注意这点,结合@Qualifier。实际研发中,显然,注入应该是确认的,那么根据名称注入,应该是首选!

IOC VS DI

IOC,控制反转;DI,依赖注入;

只有把对象交给Spring,才能由Spring帮助完成属性设定;因此,依赖注入不能单独存在,需要在IOC基础之上完成操作。

关于AOP

AOP的谋求,一种横向抽取机制,依赖于动态代理方式。

关于AOP的几个重点概念:

JoinPoint:连接点,说白了,就是可以被强化的方式;

PointCut:切入点,对这些JoinPoint进行拦截;

Advice:通知,就是拦截后的动作;

Aspect:切面,把加强应用至详细办法的过程;

Spring的AOP需要通过aspectj来实现,可以借助XML,也可以通过注解来完成。

spring boot logback-spring.xml_spring 组件_spring 组件

比如,采用XML模式的话,需要指明用A类的那个方法对B类的这些方式上进行强化,这里就涉及至execution表达式了;

比如,采用注解方式的话,就变得简单了,先在XML中进入AOP(),然后在提高技巧上直接使用类似@Before(value="execution(具体的表达式)")即可;

其实,在实际开发中,我们针对AOP最常见的就是事务了。

Spring的事务管理

Spring的声明式事务管理,用的最多的就是基于注解的方法。首先我们得配置一个事务管理器,而事务管理器必须我们注入DataSource(DBCP,c3p0等连接池),这一点好理解,因为是DB的事务。要知道,Spring对不同的DAO层框架(Spring JDBC/MyBatis/Hibernate…)提供了不同的事务实现类。

我们可以看个示例:

Spring注解事务配置

对于多个数据源,当然,我们必须定义多个事务管理器,同时也得进入事务注解。多个事务管理器,可以借助qualifier属性进行区分。

配置完毕后,直接在service层的类以及方式上,使用

@Transactional(value = "gcs", rollbackFor = Exception.class)

Spring与web整合的原理

从操作上来讲,就是在web.xml中去配置一个器,然后选定Spring的配置文件即可。

每一个WEB项目,都存在一个ServletContext对象,而我们配置的器就是对它进行,器会读取Spring的配置文件,把建立的对象放在ServletContext域(也就是setAttribute方法),获取对象的之后直接getAttribute即可!

参考:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-143571-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...