spring4学习记录01-初识spring
来源:互联网 发布:2017淘宝买家秀男大jb 编辑:程序博客网 时间:2024/04/26 08:52
简介
spring是一个开源框架,spring可以做非常多的事情,但是spring的目标是致力于简化Java开发。
为了降低spring开发的复杂性,spring采取了以下四个关键策略.
基于pojo的轻量级和最小入侵性编程
通过依赖注入和面向接口实现松耦合
基于面向切面的惯例进行声明式编程
通过切面和模板减少样板式代码
说明spring核心
IOC(控制反转)
场景:人读书
那么定义两个类 人 和 书
public class People { public String name; private int age; private Book book; public void readBook(){ System.out.println(book.getName()); } public Book getBook () { return book; } public void setBook(Book book) { this.book = book; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
public class Book { private String name; private String author; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; }}
如果直接执行下面的代码就会抛出 空指针异常 .
public static void main(String[] args) { People people = new People(); people.readBook(); }
必须改成
public static void main(String[] args) { People people = new People(); Book book = new Book(); people.setBook(book); people.readBook(); }
这里就需要对people对象的构建,book对象的构建全部由程序来完成.
而交给spring管理呢,就会帮助我们省去手动new一个的对象的过程,由spring帮助我们自动生成这个对象,而免去手动构造一个对象,手动销毁一个对象都交由spring控制,这就叫做控制反转.
交给spring管理的代码片段
public class Main { private static ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); public static void main(String[] args) { People people = (People) context.getBean("people"); people.readBook(); }}
DI(依赖注入)
上面的例子中Book就是通过DI注入到people中,people不用关注book从哪里来,只需要调用读书的方法就好,book是spring通过反射生成交给people的.
AOP(面向切面)
场景 人跑步
定义两个类,一个run,一个通知类advices
/** * 被代理的目标类 */public class Run{ public void run(String name , int km){ System.out.println(name + " : run" + km); }}
import org.aspectj.lang.JoinPoint;/** * 通知类,横切逻辑 * */public class Advices { public void before(JoinPoint jp){ System.out.println("----------跑步之前注意热身,别受伤----------"); } public void after(JoinPoint jp){ System.out.println("----------跑步完了放松肌肉----------"); }}
想要在跑步之前提醒跑步者注意热身,跑步完之后提醒跑步者进行放松.
<bean id="run" class="com.jx.spring01.Run"/> <bean id="advices" class="com.jx.spring01.Advices"/> <!-- aop配置 --> <aop:config proxy-target-class="true"> <!--切面 --> <aop:aspect ref="advices"> <!-- 切点 --> <aop:pointcut expression="execution(* com.jx.spring01.Run.*(..))" id="pointcut1"/> <!--连接通知方法与切点 --> <aop:before method="before" pointcut-ref="pointcut1"/> <aop:after method="after" pointcut-ref="pointcut1"/> </aop:aspect> </aop:config>
调用测试类
private static ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); public static void main(String[] args) { Run run = (Run) context.getBean("run"); run.run("张三", 10); }
打印结果
----------跑步之前注意热身,别受伤----------张三 : run10----------跑步完了放松肌肉----------
本章内容只是入门简单说明spring的核心ioc和aop的概念。具体用法后面会提到.
0 0
- spring4学习记录01-初识spring
- spring4学习记录02-spring AOP
- Spring4.0学习笔记002——Spring应用初识
- spring4学习记录03-spring mvc实战之框架构建
- Spring4学习:Spring Cache
- Spring Security学习记录(一) -- 初识Spring Security
- 初识Spring4
- spring4学习记录06-spring mvc实战之spring-data-jpa使用说明
- Spring4学习:Spring的事务管理
- 一.Spring4学习-----Spring介绍
- spring4学习记录04-spring mvc实战之框架构建引入jpa
- redis学习记录01-初识redis
- 初识Hadoop学习记录
- spring4学习记录05-spring mvc实战之框架构建测试jpa借助spring-data实现自动化jpa
- Spring学习1-初识Spring
- spring4学习总结以及spring整合hibernate
- spring4.0 spring MVC(三)学习
- spring4 学习4 spring MVC+mybatis+Mysql
- redis存储关系性数据库数据
- 图片轮播
- Java并发编程系列之三:锁与volatile的内存语义
- 清除tomcat下的work目录
- Java8新特性jdeps详解
- spring4学习记录01-初识spring
- js笔记2
- 1.并发编程概述
- Understanding LSTM Networks
- 轻量级操作系统FreeRTOS的内存管理机制(二)
- job定时操作事务
- 轮播图作业
- JVM调优
- linux网卡绑定