初识Spring:
Spring作者:Rod Johnson
Spring框架由20个模块组成,这些模块分成六个部分,分别是Core Container,Data Access/Integration,Web,AOP,Instrumentation和Test.
Spring Core是框架的最基础的部分,提供了IoC特性。Spring Context为企业级开发提供了遍历和集成的工具。
Spring Aop是基于Spring Core的符合规范的切面编程的实现
Spring JDBC提供了提供了JDBC的抽象层,简化了JDBC编码
Spring ORM对市面上流行的ORM框架提供了支持
Spring Web为Spring在Web应用程序中的使用提供了支持
Spring 体系结构图:
最基础部分========Spring IoC
控制反转 (依赖注入) 面向对象编程的一种设计理念,降低程序代码之间的耦合度
先定义持久化方法:
public interface IUserBiz {
//隔离的作用
public void save(User user);
}
实现对User类的持久化操作
public class UserBiz implements IUserBiz {
private IDao dao;
public void save(User user) {
dao.save(user);
}
public void setDao(IDao dao) {
this.dao = dao;
}
}
用户业务类,实现对User功能的业务管理
public class UserServiceImpl implements UserService
{
private UserDao dao=new UserDaoImpl();
public void addNewUser(User user){
dao.save(user);
}
}
bean文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--IOC-->
<bean id="happyService" class="cn.zixin.service.HappyService">
<!--DI 依赖注入-->
<property name="info" value="Spring"></property>
</bean>
<!--准备一个彩色墨盒-->
<bean id="colorInk" class="cn.zixin.printer.ink.GrayInk"></bean>
<!--准备一个B5纸-->
<bean id="B5paper" class="cn.zixin.printer.paper.A5Paper"></bean>
<!--准备打印机-->
<bean id="printer" class="cn.zixin.printer.print.Printer">
<property name="ink" ref="colorInk"></property>
<property name="paper" ref="B5paper"></property>
</bean>
<!--dao-->
<bean id="UserDao" class="cn.zixin.aop.UserDao"></bean>
<!--service-->
<bean id="UserBiz" class="cn.zixin.aop.service.UserBiz">
<property name="dao" ref="UserDao"></property>
</bean>
<!--增强配置-->
<!--前置配置-->
<bean id="LoggerAfter" class="cn.zixin.aop.LoggerAfter"></bean>
<!--后置配置-->
<bean id="LoggerBefore" class="cn.zixin.aop.LoggerBefore"></bean>
<!--Aop配置-->
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* *..service.*.*(..))"></aop:pointcut>
<aop:advisor advice-ref="LoggerAfter" pointcut-ref="pointcut"/>
<aop:advisor advice-ref="LoggerBefore" pointcut-ref="pointcut"/>
</aop:config>
</beans>
使用<BEAN>的一个组件时 ---------- id用来访问的唯一名称 name属性指定
测试类:
package cn.zixin.test;
import cn.zixin.aop.User;
import cn.zixin.aop.service.IUserBiz;
import cn.zixin.printer.print.Printer;
import cn.zixin.service.HappyService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by benxin on 2017/7/22.
*/
public class FirstSpringTest {
@Test
public void firstTest(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
HappyService service=(HappyService) context.getBean("happyService");
service.work();
}
@Test
public void firstTests(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Printer printer = (Printer) context.getBean("printer");
printer.print();
}
@Test
public void aop() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserBiz biz=(IUserBiz)ctx.getBean("UserBiz");
User user=new User();
biz.save(user);
System.out.println("success!");
}
}