下面还有静态代理和动态代理

1.构造注入

lib包:

在entity包下新建一个实体类User

代码:

 package cn.happy.entity;

 public class User {
private Integer id;
private String name;
private String age;
private String eamil; public User(Integer id, String name, String age, String eamil) {
this.id = id;
this.name = name;
this.age = age;
this.eamil = eamil;
}
public User(String name, String age, String eamil) {
super();
this.name = name;
this.age = age;
this.eamil = eamil;
}
public User() {
}
public User(String name, String age) {
this.name = name;
this.age = age;
} public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getEamil() {
return eamil;
}
public void setEamil(String eamil) {
this.eamil = eamil;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age
+ ", eamil=" + eamil + "]";
} }

User

在applicationContext.xml里面写

约束-头:

别忘记带这个不然会报错的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:p="http://www.springframework.org/schema/p"
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-4.1.xsd
">

applicationContext.xml

代码:

 <bean id="user1" class="cn.happy.entity.User">
<constructor-arg index="0" type="java.lang.String" value="LXL"></constructor-arg>
<constructor-arg index="1" type="java.lang.String" value="12"></constructor-arg>
</bean>

applicationContext.xml

测试类:Text

代码:

 public class Text {
@Test
public void inner(){
gouinner();
}
//p命名空间注入
static void gouinner(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
User user=(User)context.getBean("user1");
System.out.println(user);
}

text

结果:

2.P命名空间注入

这个实体类和上面的一样就演示了

在applicationContext.xml里面写

代码:

  <!-- p命名空间注入 -->
<bean id="user2" class="cn.happy.entity.User" p:name="你的肉" p:age="1" p:eamil="niderou@123.com"/>

applicationContext.xml

测试类Text:

代码:

     @Test
public void inner(){
Pinner();
}
//构造注入
static void Pinner(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
User user=(User)context.getBean("user2");
System.out.println(user);
}

text

结果:

3.注入集合的属性

List

实体类Jihe:

代码:

 package cn.happy.entity;

 import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set; public class Jihe {
private List<String> list; private Set<String> set; private Map<String,String> map; private Properties props; public Properties getProps() {
return props;
} public void setProps(Properties props) {
this.props = props;
} public Map<String, String> getMap() {
return map;
} public void setMap(Map<String, String> map) {
this.map = map;
} public Set<String> getSet() {
return set;
} public void setSet(Set<String> set) {
this.set = set;
} public List<String> getList() {
return list;
} public void setList(List<String> list) {
this.list = list;
} }

Jihe

在applicationContext.xml里面写

代码:

  <!-- list -->
<bean id="list1" class="cn.happy.entity.Jihe">
<property name="list">
<list>
<value>你的肉</value>
<value>你的菜</value>
</list>
</property>
</bean>

applicationContext.xml

测试类Text:

代码:

 public class Text {
@Test
public void inner(){
listinner();
}
//list
static void listinner(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Jihe jihe=(Jihe)context.getBean("list1");
System.out.println(jihe.getList());
}

Text

结果:

Set:

实体类和List的实体类一样

在applicationContext.xml里面写

代码:

         <!-- Set -->
<bean id="set1" class="cn.happy.entity.Jihe">
<property name="set">
<set>
<value>jd</value>
<value>tb</value>
</set>
</property>
</bean>

applicationContext.xml

测试类Text:

代码:

 @Test
public void inner(){
setinner();
} //set
static void setinner(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Jihe jihe=(Jihe)context.getBean("set1");
System.out.println(jihe.getSet());
}

Text

结果:

Map

实体类和List的也一样

在applicationContext.xml里面写

代码:

  <!-- map -->
<bean id="map1" class="cn.happy.entity.Jihe">
<property name="map">
<map>
<entry key="football" value="足球"></entry>
<entry key="basketball" value="篮球"></entry>
</map>
</property>
</bean>

applicationContext.xml

测试类Text:

代码:

 public class Text {
@Test
public void inner(){
mapinner();
} //map
static void mapinner(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Jihe jihe=(Jihe)context.getBean("map1");
System.out.println(jihe.getMap());
}

Text

结果:

properties

实体类和List的也一样

在applicationContext.xml里面写

代码:

     <!-- properties -->

         <bean id="props1" class="cn.happy.entity.Jihe">
<property name="props">
<props>
<prop key="ndr">你的肉</prop>
<prop key="ndc">你的菜</prop>
</props>
</property>
</bean>

applicationContext.xml

测试类Text:

代码:

 public class Text {
@Test
public void inner(){
propinner();
} //properties
static void propinner(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Jihe jihe=(Jihe)context.getBean("props1");
System.out.println(jihe.getProps());
}

Text

结果:

-------------------------------------------------------------------------------------------------------------------

接下来是!!!

静态代理

代理模式 (静态代理)
接口 :方法
---->RealClass:接口
---->ProxyClass:接口
private 接口类型 接口变量;
public void 同名方法(){
syso("增强处理");
接口变量.同名方法();
}

列表

创建一个接口Subject:

代码:

 package cn.happy.proxy;

 public interface Subject {
String quest();
}

Subject

在创建一个SubjectText类继承Subject:

代码:

 package cn.happy.proxy;

 public class SubjectText implements Subject {

     public String quest() {
return "增强";
} }

SubjectText

在创建一个代理类ProxySubject同样继承Subject:

代码:

 package cn.happy.proxy;

 public class ProxySubject implements Subject {
private Subject subject; public Subject getSubject() {
return subject;
} public void setSubject(Subject subject) {
this.subject = subject;
} public String quest() {
System.out.println("代理增强");
return subject.quest();
} }

ProxySubject

测试类Text:

代码:

 package cn.happy.Text;

 import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import org.junit.Test; import cn.happy.proxy.ProxySubject;
import cn.happy.proxy.Subject;
import cn.happy.proxy.SubjectText; public class Text {
@Test
public void inner(){
Subject sub=new SubjectText();//被代理的对象
ProxySubject proxy=new ProxySubject();//代理对象
proxy.setSubject(sub);
String quest = proxy.quest();
System.out.println(quest);
}
}

Text

结果:

动态代理

proxy包里的类和静态代理的一样只是测试类换了

测试类Text:

代码:

 package cn.happy.Text;

 import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import org.junit.Test; import cn.happy.proxy.ProxySubject;
import cn.happy.proxy.Subject;
import cn.happy.proxy.SubjectText; public class Text {
@Test
public void inner(){ final Subject sub=new SubjectText();
Subject proxy=(Subject) Proxy.newProxyInstance(sub.getClass().getClassLoader(), sub.getClass().getInterfaces(), new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("增强代码");
return method.invoke(sub, args);
}
});
proxy.quest(); }
}

Text

结果:

IOC和Aop使用的扩展的更多相关文章

  1. Spring的IOC和AOP之深剖

    今天,既然讲到了Spring 的IOC和AOP,我们就必须要知道 Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例 ...

  2. Spring IOC AOP的原理 如果让你自己设计IOC,AOP如何处理(百度)

    百度的面试官问,如果让你自己设计一个IOC,和AOP,如何设计, 我把IOC的过程答出来了,但是明显不对, (1) IOC 利用了反射,自己有个id,classtype,hashmap,所有的功能都在 ...

  3. 沉淀再出发:IoC和AOP的本质

    沉淀再出发:IoC和AOP的本质 一.前言 关于IoC和AOP这两个概念,如果我们没有深入的理解可以说是根本就不理解Spring这个架构的,同样的由Spring演变出来的Spring Boot和Spr ...

  4. Spring框架IOC和AOP介绍

    说明:本文部分内容参考其他优秀博客后结合自己实战例子改编如下 Spring框架是个轻量级的Java EE框架.所谓轻量级,是指不依赖于容器就能运行的.Struts.Hibernate也是轻量级的. 轻 ...

  5. 展开说说,Spring Bean IOC、AOP 循环依赖

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 延迟满足能给你带来什么? 大学有四年时间,但几乎所有人都是临近毕业才发现找一份好工作 ...

  6. spring的IOC和AOP协同工作

    看网络上的spring资料,基本都是在讲解IOC和AOP,但是二者是如何协同工作的,说的很少. 粗略调试了下BeanFactory的创建过程,发现是如图所示的大概过程.其中BeanPostProces ...

  7. spring - ioc和aop

    1.程序中为什么会用到spring的ioc和aop 2.什么是IOC,AOP,以及使用它们的好处,即详细回答了第一个问题 3.原理 关于1: a:我们平常使用对象的时候,一般都是直接使用关键字类new ...

  8. spring的IOC和AOP

     spring的IOC和AOP 1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是 ...

  9. Castle框架中的IOC和AOP机制

    反转控制(IOC)和面向切面编程(AOP)技术作为当前比较流行的技术,其优势已受到广泛关注,但是这两项新技术在实际项目上的应用研究却很落后,而且在.NET平台下实现这两项技术没有形成可以广泛套用的框架 ...

随机推荐

  1. ireport5.6+jasperreport6.3开发(四)--以javabean为基准的报表开发(ireport)

    javabean完成以后就是添加ireport的报表了 打开ireport的option然后在classpath中添加路径. 然后在ireport中追加数据源如图,点击图标后会出现数据源列表然后按ne ...

  2. gdb 常用内容

    gdb exegdb exe coregdb -p info m TAB ^関数の先頭 info b ^list the breakpoint set args -a test ^引数設定 show ...

  3. 获取$(this)子节点对象的方法

    获取$(this)子节点对象的方法: 1.children()方法: children() 方法返回被选元素的所有直接子元素. 该方法只会向下一级对 DOM 树进行遍历. 2.find()方法: fi ...

  4. SPSS数据分析—典型相关分析

    我们已经知道,两个随机变量间的相关关系可以用简单相关系数表示,一个随机变量和多个随机变量的相关关系可以用复相关系数表示,而如果需要研究多个随机变量和多个随机变量间的相关关系,则需要使用典型相关分析. ...

  5. css学习笔记 3

    css选择符: 通配选择符:* 类选择符:.className 标签选择符 后代选择符:例:p strong ,选择的是p标签内的所有strong标签. 子选择符:> ,只选择父标签内的直接子标 ...

  6. 即时聊天IM之四 Android客户端IM帮助类编写

    图文无关一起娱乐: 这一篇我们开始写Android端的Smack版主类,后面Android的IM功能都是通过这个帮助类实现的 引用类库: 因为我用的是IDE是Android Studio,所以我通过g ...

  7. C++内存管理的缩影

    都说C++内存管理是个大坑.实际上也确实是这样. C++有析构函数,每当一个对象过期的时候,C++会执行两个动作 1.执行析构函数. 2.将对象和对象的所有数据删除. 很多人就会问了,既然有把对象删除 ...

  8. Gerald is into Art

    Gerald is into Art Gerald bought two very rare paintings at the Sotheby's auction and he now wants t ...

  9. MVC5+EF6 入门完整教程十

    本篇是第一阶段的完结篇. 学完这篇后,你应该可以利用MVC进行完整项目的开发了. 本篇主要讲述多表关联数据的更新,以及如何使用原生SQL. 文章提纲 多表关联数据更新 如何使用原生SQL 总结 多表关 ...

  10. box-sizing 属性、min-width属性、max-width属性

    1.box-sizing  这个属性是CSS3新增的属性.IE8开始兼容.box-sizing: border-box; border-box,就是边框的这个小盒.这个属性命令,width数值指的是b ...