Spring中如何用注解的方式对有参构造器进行注入

一、我,,,无法对有参构造函数进行注入,但是可通过另一种注解方式达到相同效果(目的);

@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>

猜你喜欢

转载自blog.csdn.net/weixin_39746740/article/details/81912614
今日推荐