GVKun编程网logo

使用Spring IoC设置枚举值(spring 枚举参数)

17

如果您对使用SpringIoC设置枚举值和spring枚举参数感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解使用SpringIoC设置枚举值的各种细节,并对spring枚举参数进行深入的分析,

如果您对使用Spring IoC设置枚举值spring 枚举参数感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解使用Spring IoC设置枚举值的各种细节,并对spring 枚举参数进行深入的分析,此外还有关于java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】、java – Spring从属性文件中获取枚举值、java – 使用spring将枚举的值注入属性、java – 使用spring数据存储库和mongo db设置spring应用程序的实用技巧。

本文目录一览:

使用Spring IoC设置枚举值(spring 枚举参数)

使用Spring IoC设置枚举值(spring 枚举参数)

有没有办法在构造时通过Spring IoC设置此类枚举值?

我想做的是在类加载时注入在下面的代码片段中硬编码的值:

public enum Car{        NANO ("Very Cheap", "India"),        MERCEDES ("Expensive", "Germany"),        FERRARI ("Very Expensive", "Italy");        public final String cost;        public final String madeIn;        Car(String cost, String madeIn)        {                this.cost= cost;                this.madeIn= madeIn;        }}

假设该应用程序必须部署在Nanos“几乎免费”的德国或法拉利“负担不起”的印度。在这两个国家中,只有三辆汽车(确定性集合),不多不少,因此是一个枚举,但它们的“内部”值可能有所不同。因此,这是不可变的上下文初始化的情况。

答案1

小编典典

你是要设置enum自己吗?

我认为那是不可能的。你不能实例化枚举,因为它们具有static本质。因此,我认为Spring IoC也无法创建 enums

另一方面,如果你需要使用进行初始化,enum请查阅Spring IoC章节。(搜索枚举)有一个简单的示例可以使用。

java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】

java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】

第1章 Spring 概述

1.1 spring 概述[了解]

1.1.1 spring 是什么

1.1.2 Spring 的发展历程

1.1.3 spring 的优势

1.1.4 spring 的体系结构

第2章 IoC 的概念和作用

2.1 程序的耦合和解耦[理解]

2.1.1 什么是程序的耦合

 2.1.2 解决程序耦合的思路

2.1.3 工厂模式解耦

 2.1.4 控制反转-Inversion Of Control

第3章 使用 spring 的 IOC 解决程序耦合

3.1 案例的前期准备[会用]

 3.1.1 准备 spring 的开发包

3.1.2 创建业务层接口和实现类

3.1.3 创建持久层接口和实现类

3.2 基于 XML 的配置(入门案例)[掌握]

3.2.1 第一步:拷贝必备的 jar 包到工程的 lib 目录中

3.2.2 第二步:在类的根路径下创建一个任意名称的 xml 文件(不能是中 文)

3.2.3 第三步:让 spring 管理资源,在配置文件中配置 service 和 dao

3.2.4 测试配置是否成功

3.3Spring 基于 XML 的 IOC 细节[掌握]

3.3.1 spring 中工厂的类结构图

3.3.1.1 BeanFactory 和 ApplicationContext 的区别

3.3.1.2 ApplicationContext 接口的实现类

3.3.2 IOC 中 bean 标签和管理对象细节

3.3.2.1 bean 标签

3.3.2.2 bean 的作用范围和生命周期

3.3.2.3 实例化 Bean 的三种方式

3.3.3 spring 的依赖注入

3.3.3.1 依赖注入的概念

3.3.3.2 构造函数注入

3.3.3.3 set 方法注入

3.3.3.4 使用 p 名称空间注入数据(本质还是调用 set 方法)

3.3.3.5 注入集合属性

第4章 附录

4.1Spring 配置文件中提示的配置[会用]

 

java – Spring从属性文件中获取枚举值

java – Spring从属性文件中获取枚举值

我有一个枚举,其中值以utf8格式呈现.因此我在jsp视图中遇到了一些编码问题.有没有办法从我的messages.properties文件中获取值.如果我的属性文件中有以下行,该怎么办:

shop.first=Первый
shop.second=Второй
shop.third=Третий

我怎么能在枚举中注入它们?

public enum ShopType {    
    FirsT("Первый"),SECOND("Второй"),THIRD("Третий");

    private String label;

    ShopType(String label) {
        this.label = label;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }
}
最佳答案
我经常有类似的用例,我通过将键(不是本地化的值)作为枚举属性来处理.使用ResourceBundle(或使用Spring时的MessageSource),我可以在需要时解析任何此类本地化字符串.这种方法有两个优点:

>所有本地化字符串都可以存储在一个.properties文件中,这样可以消除java类中的所有编码问题;
>它使代码完全可本地化(事实上,它将是每个语言环境一个.properties文件).

这样,你的枚举将如下所示:

public enum ShopType {    
    FirsT("shop.first"),SECOND("shop.second"),THIRD("shop.third");

    private final String key;

    private ShopType(String key) {
        this.key = key;
    }

    public String getKey() {
        return key;
    }
}

(我删除了setter,因为枚举属性应该始终是只读的.无论如何,它不再是必需的.)

您的.properties文件保持不变.

现在是获得本地化商店名称的时候了……

ResourceBundle rb = ResourceBundle.getBundle("shops");
String first = rb.getString(ShopType.FirsT.getKey()); // Первый

希望这会有所帮助……

杰夫

java – 使用spring将枚举的值注入属性

java – 使用spring将枚举的值注入属性

我有一个类似于下面的枚举

public enum MyEnum {
ABC("some string"),DEF("some string"),GHI("another string");

String value;

private MyEnum(String value) {
    this.value = value;
}

public String value() {
    return this.value;
}}

我想创建一个util:map,使用枚举的值作为键而不是枚举本身.所以地图看起来像这样:

"some string" -> "mapped output 1"
"another string" -> "mapped output 2"

我知道我可以使用util:constant来获取枚举,但我需要enum所代表的值.

所以我的配置文件在这一刻看起来像这样:

irstKey" static-field="package.MyEnum.ABC"/>
irstKey" value="mapped output 1" />
    

有没有办法可以获得.value()甚至可以访问value属性来使用它作为密钥?

我试图将键类型声明为字符串,希望spring能够解决这个问题,但它似乎忽略了这一点.

使用spring 2.5.1,我无法修改枚举

最佳答案
如果您无法访问表达式语言,则必须回退到显式的MethodInvokingfactorybean

fig.MethodInvokingfactorybean">
  etobject">getmethod" value="value" />

您可以使用抽象父bean定义缩短重复XML.

fig.MethodInvokingfactorybean">
  getmethod" value="value" />
irstKey" parent="enumValue">
  etobject">

您也可以跳过MethodInvokingfactorybean并使用

irstKey" factory-bean="MyEnum_ABC" factory-method="value" />

但这意味着为每个枚举常量声明单独的顶级bean以及它们的value(),而使用MIFB允许您使用匿名内部bean.

java – 使用spring数据存储库和mongo db设置spring应用程序

java – 使用spring数据存储库和mongo db设置spring应用程序

在application-context.xml中定义mongo存储库时,我遇到了一个问题

以下是我在xml中得到的错误

Error occured processing XML tried to access method org.springframework.context.annotation.AnnotationConfigUtils.processCommonDeFinitionAnnotations
(Lorg/springframework/beans/factory/annotation/AnnotatedBeanDeFinition;)V from class org.springframework.data.repository.config.RepositoryComponentProvider'. See Error Log for more details servlet-context.xml /master/WebContent/WEB-INF/config line 24 Spring Beans Problem

我附上了env的截图供参考.
我正在使用eclipse Kepler版本和pom属性File就是这样的

Spring数据公共版本是1.7
spring data mongo db 1.4版.
当我打开上下文xml时,我在eclipse项目中看到了错误.

有趣的是,我有另一个项目运作良好.唯一的区别是它没有弹簧MVC和杰克逊二进制文件,否则它的类似项目.

异常堆栈跟踪:

!ENTRY org.springframework.ide.eclipse.beans.core 1 0 2014-03-01
00:04:11.839 !MESSAGE Error occured processing
‘/master/WebContent/WEB-INF/config/servlet-context.xml’ !STACK 0
java.lang.IllegalAccessError: tried to access method
org.springframework.context.annotation.AnnotationConfigUtils.processCommonDeFinitionAnnotations(Lorg/springframework/beans/factory/annotation/AnnotatedBeanDeFinition;)V
from class
org.springframework.data.repository.config.RepositoryComponentProvider
at
org.springframework.data.repository.config.RepositoryComponentProvider.findCandidateComponents(RepositoryComponentProvider.java:121)
at
org.springframework.data.repository.config.RepositoryConfigurationSourceSupport.getCandidates(RepositoryConfigurationSourceSupport.java:69)
at
org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport.getRepositoryConfigurations(RepositoryConfigurationExtensionSupport.java:54)
at
org.springframework.data.repository.config.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:88)
at
org.springframework.data.repository.config.RepositoryBeanDeFinitionParser.parse(RepositoryBeanDeFinitionParser.java:67)
at
org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at
org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)
at
org.springframework.beans.factory.xml.BeanDeFinitionParserDelegate.parseCustomElement(BeanDeFinitionParserDelegate.java:1427)
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDeFinitionParserDelegate.parseCustomElement(BeansConfig.java:1400)
at
org.springframework.beans.factory.xml.BeanDeFinitionParserDelegate.parseCustomElement(BeanDeFinitionParserDelegate.java:1417)
at
org.springframework.beans.factory.xml.DefaultBeanDeFinitionDocumentReader.parseBeanDeFinitions(DefaultBeanDeFinitionDocumentReader.java:187)
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDeFinitionDocumentReader.doRegisterBeanDeFinitions(BeansConfig.java:1330)
at
org.springframework.beans.factory.xml.DefaultBeanDeFinitionDocumentReader.registerBeanDeFinitions(DefaultBeanDeFinitionDocumentReader.java:110)
at
org.springframework.beans.factory.xml.XmlBeanDeFinitionReader.registerBeanDeFinitions(XmlBeanDeFinitionReader.java:494)
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.registerBeanDeFinitions(BeansConfig.java:402)
at
org.springframework.beans.factory.xml.XmlBeanDeFinitionReader.doLoadBeanDeFinitions(XmlBeanDeFinitionReader.java:391)
at
org.springframework.beans.factory.xml.XmlBeanDeFinitionReader.loadBeanDeFinitions(XmlBeanDeFinitionReader.java:335)
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.loadBeanDeFinitions(BeansConfig.java:388)
at
org.springframework.beans.factory.xml.XmlBeanDeFinitionReader.loadBeanDeFinitions(XmlBeanDeFinitionReader.java:303)
at

servlet context.xml

spring-mongo.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    

总结

以上是小编为你收集整理的java – 使用spring数据存储库和mongo db设置spring应用程序全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

关于使用Spring IoC设置枚举值spring 枚举参数的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】、java – Spring从属性文件中获取枚举值、java – 使用spring将枚举的值注入属性、java – 使用spring数据存储库和mongo db设置spring应用程序等相关知识的信息别忘了在本站进行查找喔。

本文标签: