标签: applicationcontext

通过 ConfigurableApplicationContext refresh() 重新加载 spring 应用程序上下文是否被认为是不好的做法

我们有一个托管在共享 tomcat 实例上的 Spring 应用程序。

有时我们必须重新加载 spring 应用程序上下文但不想重新启动 Tomcat 服务器,因为其他应用程序也托管在那里。

是否通过以下方式刷新 springs 应用程序上下文

  ((ConfigurableApplicationContext)applicationContext).refresh();
Run Code Online (Sandbox Code Playgroud)

被认为是不好的做法

我有哪些选择?

spring tomcat refresh applicationcontext

3
推荐指数
1
解决办法
3614
查看次数

将参数传递给ApplicationContext

我的应用程序我有一个application-context.xml.现在我将ApplicationContext实例化为:

ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
Run Code Online (Sandbox Code Playgroud)

是否可以通过此实例化传递参数,以便这些参数可用于初始化某些bean的某些属性?

PS:不使用属性文件.由于参数是生成运行时间,如可解决的jar的位置,系统架构,os名称等是可变的.

java spring applicationcontext

3
推荐指数
2
解决办法
1万
查看次数

如何在spring应用程序上下文中包含两个同名文件?

不确定这是否有答案,但这里有.我正在使用JUnit 4.8.1来测试我的Spring 3.1.0.RELEASE项目.我的classpath上有两个JAR文件.在每个文件中,都有相同名称的文件 - /module/rootContext.xml.

在我的testApplicationContext.xml文件(我的JUnit测试的Spring上下文文件)中,是否可以包含其中的每一个?现在,我唯一知道该怎么做的是

<import resource="classpath:/module/rootContext.xml" />
Run Code Online (Sandbox Code Playgroud)

但我不知道如何指定每个文件所在的确切JAR文件.

因为我正在处理不属于我自己的代码,所以不能更改JAR中XML文件的名称.

junit spring applicationcontext

3
推荐指数
1
解决办法
1247
查看次数

无法加载Spring ApplicationContext

我正在为一个复杂的弹簧应用程序编写单元测试.我想加载spring上下文以使用定义的bean.我的context.xml位于:

src/main/resources/context.xml
Run Code Online (Sandbox Code Playgroud)

在maven构建之后,context.xml出现在:

target/classes/context.xml
Run Code Online (Sandbox Code Playgroud)

在pom.xml中,我有:(正如所建议的这个帖子)

<resources>
    <resource>
        <filtering>true</filtering>
        <directory>src/test/resources</directory>
        <includes>
            <include>**/*.properties</include>
        </includes>
        <excludes>
            <exclude>**/*local.properties</exclude>
        </excludes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

我试图通过两种方式完成这项工作:

1, Use ApplicationContext
AppliactionContext springContext = new ClassPathXmlApplicationContext("/context.xml");
MyObject myObject = springContext.getBean(myObject.class);

2, Use Annotations
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/context.xml"})
public class myTest{
    @Autowired
    MyObject myObject;
    ...
}
Run Code Online (Sandbox Code Playgroud)

但这两种方式都不适合我.错误信息:

java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) …
Run Code Online (Sandbox Code Playgroud)

junit spring spring-aop maven applicationcontext

3
推荐指数
1
解决办法
4万
查看次数

元素"http:conduit"的前缀"http"没有约束 - 这是什么意思?

我试图根据这个官方的Apache CXF指南为我的基于CXF的客户端配置SSL支持,但Eclipse标记了带有红色下划线和非常短的错误描述的标记:http:conduit

  The prefix "http" for element "http:conduit" is not bound
Run Code Online (Sandbox Code Playgroud)

我在网上搜索了关于此消息的含义以及如何修复它的其他线索,但我还没有找到任何可以解释为什么我收到此错误的信息.

知道元素"http:conduit"的前缀"http"是不是绑定意味着什么?

绑定到什么?

为什么只有前缀"http"而不是"管道"?

java ssl web-services cxf applicationcontext

3
推荐指数
1
解决办法
2700
查看次数

Spring上下文:组件扫描转换异常

我有一个奇怪的错误,我在互联网上搜索了很多.我无法理解为什么我收到此错误.我在春季jira上找到了关于这个错误的一些解释.我有context:component-scan,applicationContext.xml我在com.sow.webservices包中定义了5个包.但是,当我添加包含控制器类的控制器包时,我抛出

Error occured processing XML '[Ljava.lang.String; cannot be cast to java.lang.String'. See Error Log for more details
Run Code Online (Sandbox Code Playgroud)

这是组件扫描:

<context:component-scan base-package="com.sow.webservices.aop, 
                                          com.sow.webservices.exceptions,
                                          com.sow.webservices.models, 
                                          com.sow.webservices.services,
                                          com.sow.webservices.controller">
Run Code Online (Sandbox Code Playgroud)

我想向您展示整个异常跟踪.感谢您的帮助.

!ENTRY org.springframework.ide.eclipse.beans.core 1 0 2014-04-11 18:07:39.996
!MESSAGE Error occured processing '/SOW_WS/src/main/webapp/WEB-INF/applicationContext.xml'
!STACK 0
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
    at org.springframework.context.annotation.AnnotationBeanNameGenerator.determineBeanNameFromAnnotation(AnnotationBeanNameGenerator.java:92)
    at org.springframework.context.annotation.AnnotationBeanNameGenerator.generateBeanName(AnnotationBeanNameGenerator.java:70)
    at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:247)
    at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:85)
    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 …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc applicationcontext

3
推荐指数
1
解决办法
2819
查看次数

Junit Spring避免加载两次应用程序上下文数据源

我有这个配置类:

@ComponentScan(
        basePackages = { 
                "mypackage.controller",
                "mypackage.service",
                "mypackage.repository" 
        }
)
@TestPropertySource(locations="classpath:configuration.properties")
@Import({
    H2Configuration.class
})
public class TestConfiguration {
}

@Configuration
public class H2Configuration {

    @Bean
    public DataSource dataSource() throws SQLException {
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        EmbeddedDatabase db = builder
                .setType(EmbeddedDatabaseType.H2)
                .addScript("h2/create.sql")
                .addScript("h2/insert.sql")
                .build();
        db.getConnection().setAutoCommit(false);
        return db;
    }

}
Run Code Online (Sandbox Code Playgroud)

我有这两个班级测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class, classes = { TestConfiguration.class })
public class FirstRepositoryTest {

    @Autowired
    MyFirstRepositoryImpl repository;

    @Before
    public void initTest() {
    }

    @Test(expected = NullPointerException.class)
    public void testNullRecords() {
        repository.foo(null, null);
    } …
Run Code Online (Sandbox Code Playgroud)

java spring applicationcontext

3
推荐指数
1
解决办法
4697
查看次数

我有WEB-INF/applicationContext.xml但应用程序找不到它

我卸载了MyEclipse4S并重新安装它并从工作区运行项目并开始获得以下异常.我有

/WEB-INF/applicationContext.xml在正确的位置:(我的上下文文件位于底部.

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc applicationcontext

2
推荐指数
1
解决办法
5万
查看次数

Spring组件扫描嵌套jar

基本上我有这个Outer.jar,在它中声明是一个带有组件扫描的应用程序上下文:

<context:component-scan
        base-package="x.y.z.class" />
Run Code Online (Sandbox Code Playgroud)

然而,这x.y.z.class是在inner.jar中,它是outer.jar的依赖,

我收到一个错误,找不到类.../Outer.jar/x/y/z/class,怎么指定检查inner.jar?

更新:初始化应用程序上下文:

 org.springframework.context.ApplicationContext ctx = 
                 new ClassPathXmlApplicationContext("applicationContext.xml");

exception: I/O failure during classpath scanning; nested exception is java.io.FileNotFoundException: ..\default\deploy\test.war\WEB-INF\lib\inner.jar\x\y\z
 and it says inner.jar/x/y/z/class not found
Run Code Online (Sandbox Code Playgroud)

Outer.jar将inner.jar作为依赖项

java spring jar autowired applicationcontext

2
推荐指数
1
解决办法
1万
查看次数

java.lang.NoClassDefFoundError:org/springframework/context/ApplicationContext maven

我是春天和maven的新手.我有一个使用Spring的简单hello world项目.项目构建成功但我在运行时遇到以下错误:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
Run Code Online (Sandbox Code Playgroud)

这是主要的应用程序:App.java

package com.test.SpringMaven2;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;



/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        System.out.println( "Hello World!" );
        ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfig.class);

        HelloWorld hello = (HelloWorld) context.getBean("helloWorld"); 
        hello.setName("Adnan");
        hello.getName();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是HelloWorld bean

package com.test.SpringMaven2;

public class HelloWorld{


    private String name; 

    public void …
Run Code Online (Sandbox Code Playgroud)

java spring maven applicationcontext

2
推荐指数
1
解决办法
2万
查看次数