需求:某些POJO需要自己手动new 出来,但这些POJO又要用到被spring管理的bean.
虚拟环境:现有类PO,PO2.前者是我们要手动new 的,后者是由spring进行管理的.
/类:PO
imp
//这里Configurable表示类PO即使在spring之外创建,仍然能够由spring进行配置."npo"是spring配置文件中的
//id为"npo"的bean,即在spring中依然有个和类PO相对应的一个类,当 new PO() 时,spring会按id为"npo"的bean
//为模板对类PO进行相应的注入
@Configurable("npo")
public class PO {
private String po1;
private PO2 po2;
public String getPo1() {
return po1;
}
public void setPo1(String po1) {
this.po1 = po1;
}
public PO2 getPo2() {
return po2;
}
public void setPo2(PO2 po2) {
this.po2 = po2;
}
}
/类:PO2
public class PO2 {
private String po2;
public String getPo2() {
return po2;
}
public void setPo2(String po2) {
this.po2 = po2;
}
}
/Spring配置文件:
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!--告诉spring有一些bean需要进行配置,包括了在外部创建的bean-->
<aop:spring-configured></aop:spring-configured>
<!--abstract="true"表示该类不会被spring实例化-->
<bean id="npo" class="com.test.PO" abstract="true">
<property name="po2" ref="npo2"></property>
<property name="po1" value="这是 po1"></property>
</bean>
<bean id="npo2" class="com.test.PO2">
<property name="po2" value="这是po2"></property>
</bean>
</beans>
==========环境配置=========
还要引入aspectj的.jar包,即让程序运行时具有AspectJ的功能.
在spring下载文件中的lib中找到 aspectjweaver.jar,现假如该包所在路径为"d:\aspectjweaver.jar".
则有如下情况进行引入:
1.如果是应用程序方式运行:
imp
imp
public class TestS {
public static void main(String[] args) {
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
PO p1 = new PO();
System.out.println(p1.getPo1() + "::" + p1.getPo2().getPo2());
}
}
同时要导入spring-aspects.jar
右击-->Run As-->Open Run Dialog...-->左侧Java Application找到TestS(如果没有,先按Ctrl+F11 运行下TestS)
-->右侧的Arguments选项卡中,VM arguments:输入-javaagent:D:\aspectjweaver.jar
2.如果是Tomcat中:
打开<Tomcat_Home>\bin\catalina.bat,在该批处理文件头部添加以下的设置:
set JAVA_OPTS=-javaagent:D:\aspectjweaver.jar
这样,Tomcat服务启动时,JVM就会使用这个参数了。
3.如果是通过Eclipse启动的Tomcat:
Configure Server-->Servers-->Tomcat x.x-->JDK-->Optional Java VM arguments
输入:-javaagent:d:\aspectjweaver.jar
OK 现在你就能自己new个类并能获取spring里的东西了.