Spring||关于spring的简单总结

Myth丶恋晨 2023-06-16 02:27 63阅读 0赞

关于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.AO**P编程的支持**

通过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注入的方式

属性注入

构造方法注入

自动装配

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

B**ytype** 根据属性的类型主动装配

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切入点

发表评论

表情:
评论列表 (有 0 条评论,63人围观)

还没有评论,来说两句吧...

相关阅读

    相关 spring colud share后简单总结

    今天在公司share spring colud后,大佬提出的一些问题。有待思考。下面的不一定正确,有的暂时没答案,有的没试过,简单记录下。 1.如何调用第三方服务? (1)