一、Spring概念【概念了解一下,主要是how】【what +why + how】
【what】Spring是开源的轻量级框架, 也是一个一站式的框架。什么叫做一站式的框架?也就是它针对javaWeb不同的层次都提供了相对对应的解决方法。比如说针对dao层,它有jdbcTemplate技术,针对service有ioc,针对web层有SpringMvc。【why】Spring它有两个核心部分,一个是ioc,控制反转,管理Bean容器,通俗解释是,将对象的实例化交给Spring来管理,也就是对象不是new 出来的,而是通过Spring配置出来的。好处是,当你的对象类发生改变的时候,你不需要去修改new 的代码,这是一种优化的设计模式,另一个是aop,面向切面的编程。什么叫切面的编程?在不修改源代码的情况下给程序添加通统一的功能,达到增强的效果。通俗解释,在执行方法前或后做一定的操作,举个例子就是所有方法的日志,所有Dao的事务。【how】下面讲吧!有几种!需要会用
二、How:上述提到有ioc和aop。接下来会分别一个个讲解
1:Spring4之IOC的使用步骤:
a:导入包,这一篇文章主要是写给基础的学员,所以怎么找包的过程会详细截图。。后面我会全部分好各类的包发给大家
spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar
四个核心基础包,无论什么操作都要加这个核心基础包哦
【注意】在使用包过程中经常会导入到两个特别的包log4j-1.2.16.jar和commons-logging-1.2.jar,这两个是错误日志和支持错误日志的包,也是需要导入的,所以一共要6个包,看截图
第二步 创建类,在类里面创建方法
//创建该类,等会测试用
public class Bean2 {
public void add() {
System.out.println("bean2.........");
}
}
第三步 创建spring配置文件,配置创建类。官方是推荐命名为applicationContext.xml。默认会加载这个文件,但是要自定义自己的xml也可以。下面是命名为bean.xml【核心步骤】
//引入约束,约束有点复杂,放在下一篇详细讲这些约束是怎么找到的。固定Copy就可以
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
/*
主要属性:
id属性:是给该类提供一个别名,获取该类的时候用到
class属性:创建对象所在类的全路径。反射方式生成该类对象
name属性:少用到,它跟id是一样的,但是他可以包含特殊字符。一般就不用了
scope属性:有兴趣的可以验证一下,两次获取bean对象,比赛两者是否相等
singleton:默认值,单例
prototype:多例
//以下做了解吧,我也很少用到,
request:创建对象把对象放到request域里面
session:创建对象把对象放到session域里面
globalSession:创建对象把对象放到globalSession里面
*/
<bean id="user" class="cn.itcast.ioc.User" scope="prototype"></bean>
</beans>
第四步 写代码测试对象创建,以下的第一二行代码是固定写法,记住。就是去读取配置文件,然后获得类的实例化
@Test
public void testUser() {
//1 加载spring配置文件,根据创建对象
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
//2 得到配置创建的对象
User user = (User) context.getBean("user");
user.add();
}
以上便完成了IOC的基础入门案例。接下来多嘴说一下,ioc的一些其他知识!有兴趣可以看一下
//Xml中配置Bean方式有三种。
//第一种是通过类的无参数构造方法,如果说类中无无参数构造方法就会报错
<bean id="user" class="cn.itcast.ioc.User" scope="prototype">
</bean>
//第二种方法是:创建静态的方法,返回类对象。这里需要依赖于一个工厂,方法是getBean2
<!-- 使用静态工厂创建对象 -->
<bean id="bean2" class="cn.itcast.bean.Bean2Factory" factory-method="getBean2"></bean>
//第三种方法是:使用实例工厂创建。非静态的方法
<!-- 使用实例工厂创建对象 -->
<!-- 创建工厂对象 -->
<bean id="bean3Factory" class="cn.itcast.bean.Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
//了解一下有第二三中创建的方法。有时候在优化代码设计模式的时候会用到。一般还是使用第三种
三:属性注入,也就是通过配置文件的方式去给变量注入信息【重要,经常用到】,可以通过配置文件的方式注入,也可以通过注解的方式注入,先介绍配置文件方式注入
第一种:使用有参数构造注入属性,采用该方法注入属性的时候,需要写有参数的构造方法才能实现,否则的话就报错,一般很少用,写构造方法麻烦
<constructor-arg name="username" value="小王小马"></constructor-arg>
//例子
<bean id="demo" class="cn.itcast.property.PropertyDemo1"> -->
<!-- 使用有参构造注入 -->
<constructor-arg name="username" value="小王小马"</constructor-arg>
</bean>
第二种:使用set方法注入属性(重点),在类中生成变量的set方法,通过set方法注入
//这种写法经常看到,推荐使用这种
<property name="bookname" value="易筋经"></property>
<!-- 使用set方法注入属性 -->
<bean id="book" class="cn.itcast.property.Book"> -->
<!-- 注入属性值
name属性值:类里面定义的属性名称
value属性:设置具体的值
-->
<!-- <property name="bookname" value="易筋经"></property>
</bean>
注解注入看下一篇咯