Spring4.x【入门 what +why +how】
来源:互联网 发布:linux vi命令保存退出 编辑:程序博客网 时间:2024/06/10 20:46
一、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>
注解注入看下一篇咯
- Spring4.x【入门 what +why +how】
- log4j what how why
- What Why How Hadoop
- SCN what,why,how?
- why+how+what
- why what how???
- WHAT、HOW、WHY
- 容器 What, Why, How
- FindBugs What Why How
- 学习三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- 学习技术的三部曲:WHAT、HOW、WHY
- java单例模式学习笔记
- Docker 容器篇
- css3 3d转换之perspective,perspective-origin
- CodeForces 385 D.Bear and Floodlight(状压DP+计算几何)
- 使用Vue.js制作仿Metronic高级表格(一)静态设计
- Spring4.x【入门 what +why +how】
- maven添加jar包
- C++排序
- 回文串算法 Longest Palindromic Substring leetcode
- Android listview显示复杂页面(inflate打气筒,将布局转换成view)
- HTML
- Qt实现简单图形绘制,双缓冲机制和显示SVG格式图片
- 提高篇—统计字符串总共出现多少次数字?
- 【C++学习笔记】for与while