它是由Rod Johnson创建的一个开源框架
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
Ioc 控制反转 DI依赖注入
Aop aspect oriented programming 面向切面编程
没有ioc是什么样子的
当需要一个对象的时候,我们程序员需要new对象,导致出现问题:耦合度高
有了IOC是什么样子?
Spring 可以提供一个容器,程序启动,通过genbean()执行对象
创建spring项目步骤:
- 创建一个项目
- 添加架包
- 创建类
- 配置文件 默认文件applicationContext.xml
-
5.<?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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"> <!-- 程序启动的时候,会根据此配置信息,自动初始化对象,此对象就放在容器中 --> <!-- <bean id="address" class="com.db.entity.Address"> <property name="province" value="henan"></property> <property name="city" value="zhengzhou"></property> </bean> --> <!-- 自动配置通过属性名 --> <!-- <bean id="person" class="com.db.entity.Person" autowire="byName"> <property name="name" value="tom"></property> <property name="sex" value="男"></property> <property name="age" value="20"></property> </bean> --> <!-- 通过引用调用address --> <!-- <bean id="person" class="com.db.entity.Person" > <property name="name" value="tom"></property> <property name="sex" value="男"></property> <property name="age" value="20"></property> <property name="address" ref="address"></property> </bean> --> <!-- 通过p标签赋值 --> <!-- <bean id="person1" class="com.db.entity.Person" p:name="zhangsan" p:sex="nan" p:age="20" > </bean> --> <!-- 自动配置通过属性类型 --> <!-- <bean id="person" class="com.db.entity.Person" autowire="byType"> <property name="name" value="tom"></property> <property name="sex" value="男"></property> <property name="age" value="20"></property> </bean> <bean id="userDao" class="com.db.dao.UserDao"></bean> <bean id="userService" class="com.db.service.UserService"> <constructor-arg> <ref bean="userDao"/> </constructor-arg> </bean> --> <!-- <context:component-scan base-package="com.db"/> --> <bean id="serverpointcut" class="com.db.addFun.ServerPointcut"></bean> <bean id="userservice" class="com.db.service.UserService"></bean> <bean id="userdao" class="com.db.dao.UserDao"></bean> <aop:config></aop:config> </beans>
- 写测试类
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext cxt=new ClassPathXmlApplicationContext("applicationContext.xml");
Person person=new Person("daas", "男", 12);
//从容器中获取
UserService service=(UserService) cxt.getBean("userService");
System.out.println(service.regist(person));
/*Person person1=(Person) cxt.getBean("person1");
System.out.println(person1.toString());*/
}
Cdata 防止字符转义 CDATA【p&g】
Scope=”singleton” 单例模式
依赖注入:
- 通过配置:①ref 引用 ②autowire=“byName”>自动注入按‘起的名字’
③autowire=“byType”>自动注入按‘类型’
二,通过注解:
<context:component-scan base-package="com.db"/>
AOP(作用是尽量不改变源码)
原理 动态代理模式
在spring中实现AOP
实现步骤:1.为项目添加Spring的aop支持
- 编写目标方法和增强处理
- 在spring配置文件中定义切入点
- 在切入点织入增强处理
构造注入