Spring||关于spring的简单总结

关于spring的简单总结

框架介绍(详解于百度百科)

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

框架特征

轻量

AOP(面向切面)

IOC(控制反转)

容器

框架

    Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

MVC

框架特点/优点

特点:

1.方便解耦,简化开发

通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

2.AOP编程的支持

通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

3.声明式事务的支持

在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

优点:

1.低侵入式设计,代码污染极低

2.独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺

3.Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦

4.Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用

5.Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问

6.Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

参数注入

1.注入直接量

2.引入其他bean组件

3.注入集合类型的属性

Bean工厂

Singletton默认值:Spring以单例模式创建bean的实例,即容器中该bean的实例只有一个

Prototype:每次从容器中获取bean时都会创建一个实例

Request:用于web应用环境,针对每次http请求都会创建一个实例

Session:用于web环境,同一个会话共享一个实例,

Bean注入的方式

属性注入

构造方法注入

自动装配

ByName:根据属性名自动装配,会查找与属性名相同的id,

Bytype 根据属性的类型主动装配

Spring常用注解

注解介绍

• @Controller

• @Service

• @Autowired

• @RequestMapping

• @RequestParam

• @Resource

• @Repository

• @Component 

• @Scope

• @SessionAttributes

• @Required

• @Qualifier

1.@Controller

• 例如

@Controller
public class SoftCreateController extends SimpleBaseController {}

• 或者
@Controller("softCreateController")

• 说明

@Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写

2.@Service

• 例如

@Service
public class SoftCreateServiceImpl implements ISoftCreateService {}

• 或者
@Service("softCreateServiceImpl")

• 说明

@Service 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写

3.@Autowired

• 例如

@Autowired
private ISoftPMService softPMService;

• 或者

@Autowired(required=false)
private ISoftPMService softPMService = new SoftPMServiceImpl();

4.@RequestMapping

• 类class

@Controller 
@RequestMapping("/bbtForum.do")

public class BbtForumController {}
@RequestMapping(params = "method=listBoardTopic")

public String listBoardTopic(int topicId,User user) {}

• 方法method

@RequestMapping("/softpg/downSoftPg.do")
@RequestMapping(value="/softpg/ajaxLoadSoftId.do",method = POST)
@RequestMapping(value = "/osu/product/detail.do", params = { "modify=false" }, method =POST)

• 说明
@RequestMapping 可以声明到类或方法上

 5.@RequestParam

@RequestParam(required=false):参数不是必须的,默认为true

@RequestParam(value="id",required=false)请求处理方法入参的可选类型

Java 基本数据类型和 String通过 @RequestParam 注解改变默认的绑定规则

6.@Resource

• 例如

@Resource
private DataSource dataSource; // inject the bean named 'dataSource'

• 或者

@Resource(name="dataSource")
@Resource(type=DataSource.class)

• 说明

@Resource 默认按bean 的name 进行查找,如果没有找到会按type 进行查找。
7.@Repository

• 与@Controller 、@Service 类似,都是向spring 上下文中注册bean 。

8.@Component 

• @Component

@Component 是所有受Spring 管理组件的通用形式,Spring 还提供了更加细化的注解形式:  @Repository 、@Service、@Controller ,它们分别对应存储层Bean ,业务层Bean ,和展示层Bean 。

9.@Scope

• 例如

@Scope("session")

@Repository()

public class UserSessionBean implementsSerializable {}

• 说明

在使用XML 定义Bean 时,可以通过bean 的scope 属性来定义一个Bean 的作用范围,
同样可以通过@Scope 注解来完成。

@Scope中可以指定如下值:

singleton:定义bean的范围为每个spring容器一个实例(默认值)

prototype:定义bean可以被多次实例化(使用一次就创建一次)

request:定义bean的范围是http请求(springMVC中有效)

session:定义bean的范围是http会话(springMVC中有效)

global-session:定义bean的范围是全局http会话(portlet中有效)

10.@SessionAttributes

• 说明

Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,
以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。
这一功能是通过类定义处标注 @SessionAttributes 注解来实现的。
@SessionAttributes 只能声明在类上,而不能声明在方法上。

• 例如

@SessionAttributes("currUser") // 将ModelMap 中属性名为currUser 的属性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class,Dept.class})
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})

11.@Required

• 例如

@required

public  setName(String name){}

• 说明

@ required 负责检查一个bean在初始化时其声明的 set方法是否被执行, 当某个被标注了 @Required 的 Setter 方法没有被调用,则 Spring 在解析的时候会抛出异常,以提醒开发者对相应属性进行设置。

12.@Qualifier

• 例如

@Autowired

@Qualifier("softService")
private ISoftPMService softPMService;

• 说明

使用@Autowired 时,如果找到多个同一类型的bean,则会抛异常,此时可以使用 @Qualifier("beanName"),明确指定bean的名称进行注入,此时与 @Resource指定name属性作用相同。

框架整合

1.sessionfactory对象

sessionfactorybean是sessionfactory的实现类,

mappingResources属性用来指定XML映射文件

2.实现Dao和service

实现Dao

在众多的dao中抽取公共的代码形成basedao,dao集成basedao,由于basedao接口的实现被不同的dao继承,所以basedao被声明形成了泛型接口,其中的类型T可以在继承时再去确定,这样就可以让basedao实现多个表的持久化功能,

实现service

定义相应的接口和实现类,和定义dao的属性

在Spring中配置Dao和service

在Spring容器中配置dao时,需要为dao注入sessionfactory对象,其次配置service时,则需要唯它注入dao对象,

Spring数据库事务处理

事务处理的步骤:

  1. 配置事务管理器
  2. 配置事务属性
  3. 配置事务的AOP切入点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值