Spring第一 基础

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Spring第一 基础脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

 

 

Psvm main方法

Sout    System.out…

 

Maven项目pom.XMl

 

<dePEndency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api<artifactId>

<version>3.1.0</version>

  <scope>PRovided</scope>

//表示项目依赖的此jar包,由tomcat服务器提供,项目打成war包,此jar包不会在打成的war包

1 Spring简介

1.1 Spring是什么

Spring是分层的轻量级开框架,以IoC反转控制和Aop面向切面编程为核心。

提供了展现层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。

1.2 Spring优势

1)方便解耦,简化开发

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

2)AOP 编程的支持

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

3)声明式事务的支持

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

4)方便程序的测试

可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。

 

5)方便集成各种优秀框架

Spring对各种优秀框架(Struts、Hibernate、hessian、Quartz等)的支持。

6)降低JavaEEAPI 的使用难度

Spring对JavaEEAPI(如JDBC、Javamail、远程调用等)进行了薄薄的封装层,使这些API 的使用难度大为降低。

7)Java 源码是经典学习范例

Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java 设计模式灵活运用以及对Java技术的高深造诣。它的源代码无意是Java 技术的最佳实践的范例。

2  Spring程序开发步骤

(1)在Pom中导入Spring开发的基本包;

(2)编写DAO接口和实现类;

(2)创建Spring核心配置文件,名字可以随意,一般命名为applicationContext.xML

(3)在Spring配置文件中配置dao的实现类;

(4)使用Spring的api获取bean实例,创建ApplicationContext对象getBean

 

2.1    导入Spring开发的基本包坐标<properties><spring.version>5.0.5.RELEASE</spring.version></properties>

<dependencies>

<!--导入spring的context坐标,context依赖core、beans、exPression--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>

</dependencies>

 

public class UserDaotest{

  public …..main(){

   ApplicationContext app=new ClassPathXmlApplicationContext(configLocation:”applicationContext.xml”);

UserDao userDao=(UserDao)app.getBean(s:”userDao”);

}

}

 

3 Spring配置文件

3.1 Bean标签基本配置

<bean id=”userDao” class=”com.UserDaoImpl” scope=”singleton”>

用于配置对象由Spring来创建。

默认调用类中的无参构造方法创建,没有无参则不能创建。

基本属性:

id: bean实例在spring容器中的唯一标识

class:bean的实际名称包括包名

3.2 scope:指对象的作用范围

 

 

用JunIT测试Scope单例 多例。

【Juint的使用步骤:在pom配置junit,写测试类,在测试方法上注解@Test即可】

public class UserDaoTest{

@Test

  public  void  test(){

//单例时,在此句执行时,创建配置的bean对象

   ApplicationContext app=new ClassPathXmlApplicationContext(configLocation:”applicationContext.xml”);

UserDao userDao1=(UserDao)app.getBean(s:”userDao”);

UserDao userDao2=(UserDao)app.getBean(s:”userDao”);

System.out.printlin(userdao1);

}

}

 

(1)当scope=singleton

Bean的实例化个数:一个(多次获取,只创建一个对象)  

Bean的实例化时机(即对象的创建):是当Spring配置文件被加载时,实例化配置的bean实例。

 

Bean的生命周期:

对象的创建:当应用加载,创建容器时,对象就被创建了。

对象的运行:只要容器在,对象就一直在

对象的销毁:当应用卸载,销毁容器时,对象被销毁。

(2)当scope=prototype时

Bean的实例化个数:多个

Bean的实例化时机:当调用getBean方法时实例化bean

对象的创建:使用对象时,创建对象实例

对象的运行:只要对象在使用中,就一直活着

对象的销毁:当对象长时间不用时,被java垃圾回收器回收。

3.3 bean生命周期的配置

init-method:指定类中的初始化方法名称

destroy-method:指定类中销毁方法名称

在UserDaoImpl中编写init和destroy方法

<bean id=”userDao” class=”com.UserDaoImpl”

init-method=”init” destory-method=” destory” scope=”singleton”>

3.4 bean实例化的三种方式

(1)无参构造方法实例化:Spring默认使用,重点掌握。

(2)工厂静态方法实例化:自己编写工厂类,配置到Spring的配置文件

public class statiCFactory(){

public static UserDao getUserDao(){

   return new UserDaoImpl();

}

}

<bean id=”userDao” class=”com.StaticFatory”

 fatory-method=” getUserDao”>

(3)工厂实例方法实例化:自己编写工厂类,配置到Spring的配置文件

 //工厂的非静态方法返回Bean实例

public class DynamicFactory(){

public UserDao getUserDao(){

   return new UserDaoImpl();

}

}

//需要先创建工厂对象

<bean id=”factory” class=”com.DynamicFatory” >

 

<bean id=”userDao” factory-bean=”factory”

 factory-method=” getUserDao”>

 

3.5 bean的依赖注入分析

依赖注入dependency injection:是ioC的具体实现。

新建UserService类.

怎么把UserDao注入到userserService?

方式一:set方法

(第一步)在UserServiceimpl中添加set方法setUserDao

代码演示:

public class UserServiceImpl implements UserService{

private UserDao userDao;

public void setUserDao(UserDao userDao){this.userDao=userDao;}

}

(第二步)在配置文件中的UserService部分配置<property name=”userDao” ref=”userDao”>,重点说明:name对应的是setUserDao除set部分的首字母小写

<bean id=”userDao” class=”com.UserDaoImpl” >

<bean id=”userService” class=”com.UserserviceImpl” ><property name=”userDao” ref=”userDao”></bean>

 

方式二:构造方法

(第一步)在UserServiceImpl中添加有参构造方法

代码演示:

public class UserServiceImpl implements UserService{

private UserDao userDao;

public UserServiceImpl (UserDao userDao){this.userDao=userDao;}

}

public UserServiceImpl (){ }

}

 

(第二步)在配置文件中的UserService部分配置

<bean id=”userDao” class=”com.UserDaoImpl” >

<bean id=”userService” class=”com.UserserviceImpl” ><constructor-arg name="userDao" ref="userDao"></constructor-arg></bean>

 

3.6 Bean的依赖注入的数据类型

注入数据的三种数据类型:普通数据类型、引用数据类型、集合数据类型

(一)普通数据类型

(1)添加set方法

public class UserDaoImpl implements UserDao {

 private int age; public void setAge(int age) {this.age = age;}

}

(2)在配置文件配置

<bean id="userDao" class="com.dao.impl.UserDaoImpl"></property><property name="age" value="15"></property></bean>

 

(二)集合数据类型(List<String>)的注入

说明:集合还可以是Map/properties具体看文档

(1)添加set方法

public class UserDaoImpl implements UserDao {private List<String> strList;public void setStrList(List<String> strList) {this.strList = strList;}

}

(2)配置文件配置

<bean id="userDao" class="com.dao.impl.UserDaoImpl"><property name="strList"><list><value>aaa</value><value>bbb</value><value>ccc</value></list></property></bean>

 

3.7引入其他配置文件(分模块开发)

 

实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载<import resource="applicationContext-xxx.xml"/>

3.8 Spring重点配置

<bean>标签

id属性:在容器中Bean实例的唯一标识,不允许重复

class属性:要实例化的Bean的全限定名

scope属性:Bean的作用范围,常用是Singleton(默认)和prototype

<property>标签:属性注入

name属性:属性名称

value属性:注入的普通属性值

ref属性:注入的对象引用值

<list>标签<;map>标签<properties>标签<constructor-arg>标签

<import>标签:导入其他的Spring的分文件

脚本宝典总结

以上是脚本宝典为你收集整理的Spring第一 基础全部内容,希望文章能够帮你解决Spring第一 基础所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。