spring笔记-总结
IOC,DI,AOP
spring是容器,用来管理对象(bean)的创建。有两种使用方法:xml和java注解。 我们彻底不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所 谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !
1) xml方式通过标签来创建(注册)对象。
短命名空间注入
我们在通过构造函数或 setter 方法进行属性注入时,通常是在
Spring 框架提供了 2 种短命名空间,可以简化 Spring 的 XML 配置,如下表。
p 命名空间
c 命名空间
p 命名空间注入
p 命名空间是 setter 方式属性注入的一种快捷实现方式。通过它,我们能够以 bean 属性的形式实现 setter 方式的属性注入,而不再使用嵌套的
首先我们需要在配置文件的
xmlns:p="http://www.springframework.org/schema/p"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。
<bean id="Bean 唯一标志符" class="包名+类名" p:普通属性="普通属性值" p:对象属性-ref="对象的引用">
使用 p 命名空间注入依赖时,必须注意以下 3 点:
Java 类中必须有 setter 方法;
Java 类中必须有无参构造器(类中不包含任何带参构造函数的情况,无参构造函数默认存在);
在使用 p 命名空间实现属性注入前,XML 配置的
c 命名空间注入
c 命名空间是构造函数注入的一种快捷实现方式。通过它,我们能够以
首先我们需要在配置文件的
xmlns:c="http://www.springframework.org/schema/c"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。
<bean id="Bean 唯一标志符" class="包名+类名" c:普通属性="普通属性值" c:对象属性-ref="对象的引用">
使用 p 命名空间注入依赖时,必须注意以下 2 点:
Java 类中必须包含对应的带参构造器;
在使用 c 命名空间实现属性注入前,XML 配置的
在xml文件在配置bean,设置属性,然后在java类中读取(加载)xml配置信息,即完成了对象的创建。于是就可以通过getBean()得到对象。xml文件一般放在resources文件夹下。下面是以一个Maven项目的文件目录格式为例:
./src/main/resources/spring/spring_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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<beanid="user1" class="wqh.bean.User"/>
<!-- 用空格分开,不是逗号! -->
<bean id="user2" class="wqh.bean.User">
<constructor-arg name="name" value="user-ok" />
<property name="name" value="User 2 " />
</bean>
<!-- 要使用ref来注入另一个对象-->
</beans>
./src/main/java/wqh/spring/TestSpring.java
package wqh.spring;
import wqh.bean.*;
import java.util.List;
// import java.io.*;
// import javax.servlet.*;
// import javax.servlet.http.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestSpring {
public static void main(String[] args){
try{
String s;
//test 1
ApplicationContext ctx=
new ClassPathXmlApplicationContext("spring/spring_applicationContext.xml");
User user1= ctx.getBean("user1", User.class);
// User user1= (User) ctx.getBean("user1" );
s=user1.getName()+"<br>\n";
System.out.println(s);
// User user2= ctx.getBean("user2", User.class);
User user2= (User) ctx.getBean("user2" );
s=user2.getName()+"<br>\n";
System.out.println(s);
}catch(Exception ee){
System.out.println("Exception "+ee);
}
}
}

浙公网安备 33010602011771号