一、我,,,无法对有参构造函数进行注入,但是可通过另一种注解方式达到相同效果(目的);
@Component /**①spring注解模式*/
public class ClassName {
@Value("${file.value}") //引用属性文件变量值 /**② 属性文件注入*/
String paramName; //(把它看成构造函数的“参数”,Ps:其实它就是类成员变量,^_^;)
@PostConstruct
private void construct() { //通过@PostConstruct的必须执行,把它假装看成一个构造函数
paramName = ""; //随便对“构造函数”的“参数”进行操作,
//...
}
}
1.application-context.xml的配置:
①启动spring注解,且扫描其所在包,②属性文件注入;
<!-- 启动spring注解 -->
<context:annotation-config/>
<!-- 扫描注解所在包 识别@component-->
<context:component-scan base-package="ioc"></context:component-scan>
<!-- 加载属性文件 --> <!-- 该属性文件在src下,名称:file.properties -->
<context:property-placeholder location="classpath:file.properties"/>
2.属性文件配置:
file.value="pramaValue"
3.创建项目文件截图:
图片正在加载中。。。
^_^
二、当然了,如果非要给构造器写入参数,也是可以的;不过,得使用关键字@Autowired,并在application-context.xml文件中创建构造器参数的bean了,麻烦死了这个(如果这个参数的数据类型 是 基本数据类型/包装类<int,double,String,>的话)
@Component /**①spring注解模式*/
public class ClassName {
@Autowired
public void construct(String paramName) { //通过@PostConstruct的必须执行,把它假装看成一个构造函数
paramName = ""; //随便对“构造函数”的“参数”进行操作,
//...
}
}
那么此时,.xml文件中还应该为参数paramName创建bean(PS:有个参数就应创建几个bean);
<bean id="paramName" class="java.lang.String">
<constructor-arg name="paramName" value="${file.path}"/>
</bean>
<!--
<bean></bean>
...
-->
三、构造函数参数注入标配版:
@Component /**①spring注解模式*/
public class ClassName {
public construct(String paramName) { //通过@PostConstruct的必须执行,把它假装看成一个构造函数
paramName = ""; //随便对“构造函数”的“参数”进行操作,
//...
}
}
那么此时,.xml文件中还应该为参数paramName创建bean;
<bean id="className" class="**.ClassName">
<constructor-arg name="paramName" value="${file.path}"/>
</bean>
版权声明:本文为weixin_39746740原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。