【问题标题】:Setter injection in SpringSpring中的Setter注入
【发布时间】:2020-02-14 00:36:13
【问题描述】:

我正在运行 Spring Core 程序,但出现此错误。我配置构建路径并添加所有 jar 文件。 项目结构

WishMessageGenerator.java

package com.nt.beans;
import java.util.Date;

public class WishMessageGenerator {
    private Date date;
    public WishMessageGenerator() {
        System.out.println("WishMessageGenerator:0-param      constructor");
    }
    public void setDate(Date date) {
        System.out.println("WishMessageGenerator:setDate(-)");
        this.date = date;
    }
    public String generateMessage(String user) {
        int hour = 0;
        System.out.println("Injected date::"+date);
        hour = date.getHours();
        if(hour < 12)
            return "Good Morning :::"+user;
        else if(hour < 16)
            return "Good AfterNoon :::"+user;
        else if(hour < 20)
            return "Good Evening :::"+user;
        else
            return "Good Night"+user;
    }
}

applicationContext.xml

<?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
    https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- Dependent Bean class cfg -->
    <bean id="dt" class="java.util.Date" />

    <!-- Target Bean class cfg -->
    <bean id="wmg" class="com.nt.beans.WishMessageGenerator">
        <property name="date" ref="dt"></property><!-- Setter injection -->
    </bean>
</beans>

SetterInection.java

package com.nt.test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

import com.nt.beans.WishMessageGenerator;

public class SetterInjection {

    public static void main(String[] args) {
        Resource res = null;
        BeanFactory factory = null;
        Object obj = null;
        WishMessageGenerator generator = null;
        res = new   FileSystemResource("src/com/nt/cfgs/applicationContext.xml");
        factory = new XmlBeanFactory(res);
        obj = factory.getBean("wmg");
        generator = (WishMessageGenerator)obj;
           System.out.println("result:::"+generator.generateMessage("KingRk"));
    }
}

我得到了这个输出: 错误:无法初始化主类 com.nt.test.SetterInjection 引起:java.lang.NoClassDefFoundError: org/springframework/core/io/Resource 输出是:

【问题讨论】:

  • 您缺少依赖项。我强烈建议使用 Maven 或 Gradle 来管理您的依赖项,而不是您扫描互联网下载 jar。

标签: spring


【解决方案1】:

我们必须将 jar 添加到类路径而不是模块路径中

使用构建路径将 jar 添加到类路径中

Buid path

【讨论】:

  • 但是为什么呢?正如Project Jigsaw 中所述,我认为模块应该让 Java 变得更好、更安全、更封装且更易于管理
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多