脚本宝典收集整理的这篇文章主要介绍了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 …..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
对象的创建:使用对象时,创建对象实例
对象的运行:只要对象在使用中,就一直活着
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 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,请注明来意。