当前位置: 首页 > 知识库问答 >
问题:

通过注释类加载应用程序上下文

池永长
2023-03-14

我是spring的新手,我想知道是否可以只通过注释必须注入变量的类来加载应用程序(而不是使用ApplicationContext ctx=new ApplicationContext(“MyAppContext”))。

我举以下例子:

我有一个类testspring.java,其中一个字符串应该是自动连线的

package mytest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

//Is it possible to put an annotation here that loads the application context "TestSpringContext.xm"??
public class TestSpring {

    @Autowired
    @Qualifier("myStringBean")
    private String myString;


    /**
     * Should show the value of the injected string
     */
    public void showString() {
        System.out.println(myString);
    }

}

spring bean配置文件(testSpringContext.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"
  xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
        >

 <context:annotation-config />

 <bean id="myStringBean" class="java.lang.String">
 <constructor-arg value="I am  an injected String."/>
</bean>
</beans>

现在,我想使用runtestspring.java中的以下代码显示自动连线字符串mystring(在testspring.java中声明)的值:

package mytest;

public class RunTestSpring {

    public static void main(String[] args) {
        TestSpring testInstance = new TestSpring();
        testInstance.showString();

    }

}

现在我的问题是,在加载应用程序上下文时,是否可以通过注释runtestspring.java来成功运行“runtestspring.java”。如果是,用哪一个注释?

共有2个答案

屠兴旺
2023-03-14

我建议编写一个使用spring注入进行环境初始化的JUnit类。像这样的东西-

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/spring/spring-wireup.xml", inheritLocations = true)
public class MyTestCase extends TestCase {
    // your test methods ...
}
向泽语
2023-03-14

@configurable可能是您正在寻找的,它将确保未被spring实例化的对象可以由spring自动连接其依赖关系。然而,问题在于它需要AspectJ编译时/加载时编织才能工作(而不是spring的AOP)。

这里有一个参考文件:http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/aop.html#aop-atconfigurable

 类似资料:
  • 假设我想为类编写一个,它可以是,因此我需要加载。 我的测试有注释和main方法 当然,我有这样一些基准: 现在的问题是如何注入? 可能的解决办法

  • 我正在使用Spring 4.1.4和Ehcache 2.9并使用注释进行缓存。 我注意到,每个具有带有此注释的方法的公共类都必须在 谢谢

  • 我正在处理一个Spring Boot应用程序,其中我使用该应用程序公开SOAP WebService。我在Spring boot应用程序中使用Apache CFX framework for SOAP impl。我正在使用基于注释的方法。 我在一个bean中的Spring Boot配置文件中设置应用程序上下文时遇到了问题。下面是我的代码。 配置文件如下所示。 现在我有了bean SOAPproce

  • 我在我的Android应用程序中使用滑翔进行图像加载,以避免任何崩溃,我正在加载带有应用程序上下文的图像。这会对应用程序和内存的性能产生什么影响?

  • 我有一个相当简单的设置。一个包含3个模块的maven项目:core/webapp/model。我正在使用Spring boot来升级我的应用程序。在webapp中,我有一个简单的类WebappConfig如下: 当我部署abcd.war时,applicationcontext加载了两次,并导致以下错误stracktrace: 不存在我前面提到的web.xml。 一些有趣的事情,我不知道为什么: n

  • 我在我的src/test/resources路径中创建了一个application-integrationtest.yaml,所以我的测试是针对创建的docker TestContainer运行的。问题是没有加载我的application-integrationtest.yaml。 我正在运行一个SpringBoot2.x应用程序 原因:org.springframework.beans.Bean