您现在的位置是:首页 > 个人日记个人日记

spring-03-构造方法注入和set方法注入

2019-02-03 18:03:29【个人日记】355人已围观

简介两种bean的装配方式

构造方法注入和set方法注入


set方法注入

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!--id:用于从spring容器获得实例时使用-->
  6. <!--class:需要创建实例化的全限定名-->
  7. <!--property:类中的成员-->
  8. <!--scope是bean的作用域-->
  9. <!--scope属性有singleton单例模式,prototype多例模式-->
  10. <!--默认是单例模式-->
  11. <!--init-method初始化时调用该方法,destroy-method结束时调用该方法-->
  12. <bean id="messageService" init-method="init" destroy-method="destroy" class="com.spring.MessageService" scope="singleton">
  13. <!--name:成员的名称-->
  14. <!--value:对应属性的值-->
  15. <property name="message" value="hello spring"/>
  16. </bean>
  17. </beans>

这是set方法注入

构造方法注入

对象信息

  1. package com.spring;
  2. public class MessageService {
  3. private String message;
  4. MessageService(String message) {
  5. this.message = message;
  6. }
  7. public void init() {
  8. System.out.println("init...");
  9. }
  10. public void destroy() {
  11. System.out.println("destroy");
  12. }
  13. public String getMessage() {
  14. return message;
  15. }
  16. public void setMessage(String message) {
  17. this.message = message;
  18. }
  19. }

这时候使用构造方法注入

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!--构造方法注入-->
  6. <bean id="messageService" class="com.spring.MessageService">
  7. <!--name是带参数构造方法的参数名称-->
  8. <constructor-arg name="message" value="Hello Spring"></constructor-arg>
  9. </bean>
  10. </beans>

构造方法注入应当使用标签
set方法使用

当在Bean增加字段

  1. package com.spring;
  2. public class MessageService {
  3. private String message;
  4. private String name;
  5. MessageService(String message, String name) {
  6. this.message = message;
  7. this.name = name;
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15. public void init() {
  16. System.out.println("init...");
  17. }
  18. public void destroy() {
  19. System.out.println("destroy");
  20. }
  21. public String getMessage() {
  22. return message;
  23. }
  24. public void setMessage(String message) {
  25. this.message = message;
  26. }
  27. }

这时候配置中有三种方式

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!--构造方法注入-->
  6. <bean id="messageService" class="com.spring.MessageService">
  7. <!--name是带参数构造方法的参数名称-->
  8. <constructor-arg index="0" value="Hello Spring"></constructor-arg>
  9. <constructor-arg index="1" value="Spring"></constructor-arg>
  10. -------------------------------------------------------------------
  11. <constructor-arg type="java.lang.String" value="Hello Spring"></constructor-arg>
  12. <constructor-arg type="java.lang.String" value="Spring"></constructor-arg>
  13. --------------------------------------------------------------------
  14. <constructor-arg name="message" value="Hello Spring"></constructor-arg>
  15. <constructor-arg name="name" value="Spring"></constructor-arg>
  16. </bean>
  17. </beans>

以上三种方式用 - 隔开

Tags: JavaWeb  

评论区

    2024-12-12 20:47:16

    站长

    没有登录功能是为了方便大家留言,但留言接口现在被恶意攻击,将关闭留言接口,如有疑问,请联系我的QQ 1538933906/同微信


文章评论



给自个选个头像吧!






站点信息

  • 建站时间:   2019-01-31
  • 网站程序:   Tomcat+nginx
  • 文章统计:   44篇文章
  • 标签管理:   标签云
  • 微信公众号:  扫描二维码,联系我