Spring系列【3】应用构造器注入法实现Bean的注入

package cn.com.xf;

public class User {
    private String name;
    private int age;
    private String remark;

        //省略setter/getter方法

    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + ", remark=" + remark
                + "]";
    }

}
package cn.com.xf;

public class UserUtil {
    private User user;
    public User getUser() {
        return user;
    }

        //注意这个构造方法
    public UserUtil(User u){
        this.user=u;
    }

    public boolean isUser() {
        if (user != null) {
            return true;
        } else {
            return false;
        }
    }

}

以下是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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="user" class="cn.com.xf.User">
        <property name="name" value="jikoy"></property>
        <property name="age" value="28"></property>
        <property name="remark" value="this is remark"></property>
    </bean>
    <bean id="userUtil" class="cn.com.xf.UserUtil">
        <constructor-arg ref="user"></constructor-arg>
    </bean>
</beans>

以上,我跟前一篇不一样,没有使用P标签,但效果是一样的,注意 <constructor-arg ref="user"></constructor-arg>

package cn.com.xf;

import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        User user=(User) ctx.getBean("user");
        ctx.close();
        System.out.println(user);
    }

}

测试类仍是使用了ApplicationContext的子接口方法,并提供了关闭方法。

时间: 2024-08-04 21:12:12

Spring系列【3】应用构造器注入法实现Bean的注入的相关文章

Spring系列【2】应用setter注入法实现Bean的注入

package cn.com.xf; public class User { private String name; private int age; private String remark; //省略属性的getter/setter方法 @Override public String toString() { return "User [name=" + name + ", age=" + age + ", remark=" + rema

Spring系列【6】@Resource注解实现Bean的注入

Book.java 1 package cn.com.xf; 2 3 public class Book { 4 private String name; 5 private double price; 6 public String getName() { 7 return name; 8 } 9 public void setName(String name) { 10 this.name = name; 11 } 12 @Override 13 public String toString

Spring系列【7】零配置实现Bean的注入

与前几例不同,需要导入aop包. Book.java 注意Book类@Component 1 package cn.com.xf; 2 3 import org.springframework.stereotype.Component; 4 5 @Component 6 public class Book { 7 private String name="JAVA从入门到精通"; 8 private double price=45.67; 9 public String getName

struts2与spring集成时,关于class属性及成员bean自动注入的问题

正常来说按照Spring官方配置,在struts2与spring整合时,struts配置文件中class属性指向spring配置的bean id,但是在class指向类路径时,依然能注入service. public class LoginAction extends ActionSupport{ private LoginService loginService; public void setLoginService(LoginService loginService) { System.o

Spring系列【08】为JavaBean的集合对象注入属性值

TestUtil.java 1 package com.lh.util; 2 3 import java.util.List; 4 import java.util.Map; 5 import java.util.Set; 6 7 public class TestUtil { 8 @Override 9 public String toString() { 10 return "TestUtil [list=" + list + ", set=" + set +

Spring系列之Spring常用注解总结

传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低.2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率.为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java Bean紧密

[JavaEE] IBM - Spring 系列: Spring 框架简介

Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的.强壮的 J2EE 应用程序.developerWorks 的定期投稿人 Naveen Balani 通过介绍 Spring 框架开始了他由三部分组成的 Spring 系列,其中还将介绍 Spring 面向方面的编程(AOP)和控制反转(IOC)容器. Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一

Spring 系列: Spring 框架简介

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. 在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架.我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器.接着将使用几个示例演示 IOC 容器在典型应用程序用例场景中的应用情况.这些示例还将成

[Spring系列01]Spring IOC/DI模拟

本文以一个简单的实例大致模拟Spring IOC/DI的运行原理,代码简单分dao,model,service三层.即:dao 与数据库的操作,增删改查等方法model 一般都是javabean对象,例如与数据库的某个表相关联.service 供外部调用,等于对dao,model等进行了包装. 程序结构图如下: 先粘贴部分代码,再进行解释: UserDAO.java package com.ctsh.dao; import com.ctsh.model.User; public interfac