1. 程式人生 > >5. Spring核心概念

5. Spring核心概念

1.初始Spring

spring是一個輕量級框架,他大大簡化了java企業級開發,提供了強大,穩定的功能,又沒有帶來額外的目標

目標: 一是讓現有技術更易於實現 二是促進良好的程式設計習慣

2.Spring IoC

2.1理解"控制反轉"

控制反轉:也稱為依賴注入,是面向對面程式設計的一種設計理念,用來降低程式程式碼的耦合度

2.2編寫一個Spring程式

(1).編寫一個HelloSpring程式

	private String who = null;

	public String getWho() {
		return who;
} public void setWho(String who) { this.who = who; } public void print() { System.out.println("Hello," + this.getWho()); }

(2).在專案classpath(src)根目錄下建立applicationContext.xml檔案

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
	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-3.2.xsd"> <bean id="helloSpring" class="HelloSprng.HelloSpring"> <property name="who"> <value>Spring</value>
</property> </bean> </beans>

(3).新增測試方法

ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext1.xml");
HelloSpring helloSpring=(HelloSpring)ctx.getBean("helloSpring");
System.out.println(helloSpring.getName()+helloSpring.getText());

2.3依賴注入

1、設定注入
IoC容器使用setter方法來注入被依賴的例項
2、構造注入
構造例項,完成依賴例項的初始化。

3.Spring AOP(“面向切面程式設計”)

面向切面程式設計:簡單地說就是在不改變原程式的基礎上為程式碼增加新的功能,對程式碼進行增強處理。他的設計思想來源於代理設計模式

在這裡插入圖片描述

3.1使用Spring AOP 實現日誌輸出

(1).匯入Spring Aop 相關的jar檔案
spring-aop-3.2.13.RELEASE.jar aop實現包
aopallicabe-1.0.jar 依賴包
aspectjweaver-1.6.9.jar 依賴包
(2).編寫前置增強和後置增強的實現程式碼

import java.util.Arrays;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;

public class UserServiceLogger {
	private static final Logger log = Logger.getLogger(UserServiceLogger.class);
	public void before(JoinPoint jp) {
		log.info("呼叫 " + jp.getTarget() + "的" + jp.getSignature().getName()
				+ "方法。方法入參" + Arrays.toString(jp.getArgs()));
	}
	public void afterReturning(JoinPoint jp, Object result) {
		log.info("呼叫 " + jp.getTarget() + "的" + jp.getSignature().getName()
				+ "方法.方法返回值" + result);
	}
}

getTarget()方法可以得到被代理的目標物件
getSignature()方法返回被代理的目標方法
getArgs()方法返回傳遞給目標方法的引數陣列

(3).編寫Spring配置檔案,對業務方法進行增強處理

<bean id="theLogger" class="aop.ErrorLogger"></bean>
		 <aop:config>
	<!-- 定義切入點 -->
	<aop:pointcut id="pointcut"
	expression="execution(public void addNewUser(entity.User))" />
	<!-- 引用包含增強方法的Bean -->
	<aop:aspect ref="theLogger">
	<!-- 將before()方法定義為前置增強並引用pointcut切入點 -->
	<aop:before method="before" pointcut-ref="pointcut"></aop:before>
	<!-- 將afterReturning()方法定義為後置增強並引用pointcut切入點
	通過returning屬性指定為名為result的引數注入返回值 -->
	<aop:after-returning method="afterReturning"
	pointcut-ref="pointcut" returning="result" />
	</aop:aspect>
	</aop:config>

在這裡插入圖片描述