Spring各方面概述

2 篇文章 0 订阅
1 篇文章 0 订阅

本篇只记录Spring功能的大概,详细内容会另开文章

Spring不同的配置方式

XML方式:1.x版本开始实现

基于注解方式:@Component等,2.x版本开始实现;该方式需要部分xml配置内容

Java方式配置:3.x版本开始实现;该方式相当于把xml配置文件改成了Java类

学习Spring建议使用XML方式配置,正式使用使用Java方式或注解方式

注解方式和xml方式、Java方式配置并不能算是同一个分类;应该说Spring配置方式有以下四种:纯XML方式(最开始的时候的模式,现在一般不用)、XML+注解、Java+注解、纯Java(这个一般不用)

所以对现在来说只有中间两种配置方式的差异;一般只有一些环境类的类需要直接配置声明Bean,和项目服务相关的大量类都使用注解模式


Spring IOC

Spring IOC即控制反转,用于解耦代码,便于移植

想要使用注解方式,需要在xml配置文件中添加以下配置自动扫描指定路径下的被注解的类

<context:component-scan base-package="cn.*"/>
<context:component-scan base-package="test.*"/>
 或者使用Java配置方式时使用以下注解在配置类上 

@ComponentScan("cn.*")
@ComponentScan("test.*")

声明Bean

XML

<bean id="myBean" class="cn.Test"/>
<bean class="cn.Test"/>

注解

此类注解用于声明一个Bean,一般放在类上,或者Java配置时放在配置类需要声明Bean的方法上

@Component:没有明确角色

@Service:业务层使用

@Repository:数据访问层使用

@Controller:展现层使用,在使用Spring MVC框架的时候前台url只与注解了这个的类进行绑定

以上注解在作为普通Bean的时候效果并没有非常大的差别,使用哪个都一样

在另外一个Bean中注入Bean

xml

<bean id="myBean" class="cn.Test"/>
<bean class="cn.Test1" p: myBean-ref="myBean"/>
其中myBean为Test1类的属性,属性类型为cn.Test;-ref为固定格式

注解

此注解一般放置于属性上,用于给指定属性(一般为类)自动注入对应类的Bean实例

@Autowired:Spring提供

@Inject:JSR-330提供

@Resouce:JSR-250提供

以上三种方式效果相同

Bean的Scope(作用范围)

作用范围配置在XML中为Bean的一个熟悉,在注解方式使用@Scope指定,默认值为singleton

singleton:一个容器只有一个Bean实例

prototype:每次调用新建一个Bean实例

request:Web项目中使用,每个HTTP request新加一个Bean实例

session:Web项目中使用,每个HTTP session新建一个Bean实例

globalSession:只在portal应用中使用,每个global HTTP session新建一个Bean实例(实际未使用过,不知道具体效果)

step:@StepScope,作用未明,先记着以后再查资料整理

Bean初始化和销毁方法配置

XML方式:init-method、destroy-method属性指定方法

Java配置方式:initMethod、destroyMethod

注解方式(方法上):JSR-250的@PostConstruct、@PreDestroy

根据不同情况实例化不同Bean

@Profile("xxx"):xxx为容器环境变量“spring.profiles.active”的值,一般测试中使用context.getEnvironment().setActiveProfiles("xxx")方式临时配置

@Conditional(xxx.class):xxx为实现org.springframework.context.annotation.Condition接口的类,用于判断是否使用该注解了的方式创建Bean实例

AOP(面向切面编程)

AOP的目的是解耦,使一组类共享相同行为

@Aspect:声明一个切面类

@PointCut:定义拦截规则

@After:定义被拦截方法执行前执行的方法,拦截规则可以使用@PointCut注解的方法,也可以自己声明

@Before:定义被拦截方法执行后执行的方法,拦截规则可以使用@PointCut注解的方法,也可以自己声明

@Around:定义被拦截方法执行时执行的方法,需要在方法中主动执行被拦截方法,拦截规则可以使用@PointCut注解的方法,也可以自己声明

Spring MVC

M:Spring的ModelAndView

V:jsp、html、freemarker等

C:@Controller注解的类

Spring MVC常用注解

@Controller:声明一个Controller的Bean,在Web项目web.xml文件的Spring主控Servlet会根据servlet-name查找对应的${servlet-name}-servlet.xml配置文件,根据该配置文件内扫描到的@Controller注解类将请求映射到对应的@RequestMapping注解方法上

@RequestMapping("/xxx"):映射url请求和方法;可以放在方法和类上;若类上有该注解则其所有使用该注解的方法继承类上的父url请求路径(即类上路径为${parentMapping}+${functionMapping})

@ResponseBody:该注解可以配置在类和方法上,配置类上代表对类的所有方法有效;代表直接返回方法的返回值而不是页面

@PathVariable:放在参数前,接收路径参数,如下

@RestController:组合注解,组合了@Controller和@ResponseBody两个注解的功能



以上内容参考来源:

Spring 3.x企业应用开发实战(陈雄华 林开雄 著)

JavaEE开发的颠覆者: Spring Boot实战 (汪云飞 著)

等网上资源。。。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值