我在玩@Qualifier
和@Autowired
这是我的应用程序上下文文件
<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.5.xsd">
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<bean id="helloBean" class="com.springex1.HelloWorld1">
<property name="name" value="Mkyong" />
</bean>
<bean id="address1" class="com.springex1.Address" >
<property name="street" value="sahajanand" />
</bean>
<bean id="address2" class="com.springex1.Address" >
<property name="street" value="pune" />
</bean>
以下是我的Java类
HelloWorld1。JAVA
package com.springex1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class HelloWorld1 {
private String name;
@Autowired
@Qualifier("address1")
private Address address = null;
public void setName(String name) {
this.name = name;
}
public void setAddress(Address address) {
this.address = address;
}
public void printHelloWithAddress() {
System.out.println("Hello ! " + name + " your street " + address.getStreet());
}
}
住址JAVA
package com.springex1;
public class Address {
private String street = "";
public void setStreet(String street) {
this.street = street;
}
public String getStreet(){
return this.street;
}
}
这里是我尝试运行东西的地方-应用程序。JAVA
package com.springex1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
call1("appContext1.xml");
}
public static void call1(String appContext){
ApplicationContext context = new ClassPathXmlApplicationContext(appContext);
HelloWorld1 obj = (HelloWorld1) context.getBean("helloBean");
obj.printHelloWithAddress();
}
}
我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常
警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.factory.未满足依赖异常:创建名为“helloBean”的bean时出错:通过字段“地址”表示的不满足依赖关系:没有类型[com.springex1的限定bean。地址]被定义为:预期的单个匹配bean,但发现2: address1,address2;嵌套异常是org.springframework.beans.factory.NoUniqueBean定义异常:没有类型[com.springex1的合格bean。地址]被定义:预期的单个匹配bean,但发现2: address1,address2异常在线程“main”org.springframework.beans.factory.不满意依赖异常:错误创建bean的名称'helloBean':不满意的依赖通过字段'地址'表示:没有符合条件的bean的类型[com.springex1...地址]被定义为:预期的单个匹配bean,但发现2: address1,address2;嵌套异常是org.springframework.beans.factory.NoUniqueBean定义异常:没有类型[com.springex1的合格bean。地址]被定义为:预期的单个匹配bean,但发现2: address1,address2在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPost处理器$autowiredFieldElement.inject(autowiredAnnotationBeanPostProcessor.java:573)
我使用的是Spring4.3发行版-这是我pom中唯一的依赖项
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
-->
Spring4。x使用以下bean模式:
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
您还需要添加:
<context:annotation-config />
或:
<context:component-scan base-package="com.test.package" />
通过添加其中一个标记,可以从xml中删除AutowiredNotationBeanPostProcessor定义。
您需要添加
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<bean id="helloBean" class="com.code.samples.HelloWorld1">
<property name="name" value="Mkyong" />
</bean>
<bean id="address1" class="com.code.samples.Address" >
<property name="street" value="sahajanand" />
</bean>
<bean id="address2" class="com.code.samples.Address" >
<property name="street" value="pune" />
</bean>
</beans>
首先,Spring文档建议不要使用@Qualifer
,而是建议使用@Resources
注释,该注释按名称进行注入(如限定符)。
因此,选项一是将@限定符
替换为@Resource
注释。
但是为了使IOC能够正确地使用@Resource
进行注入,您应该
名称地址地址
至地址地址1
现在,如果仍要使用@限定符
,则必须将配置更改为:
<bean id="address1" class="com.springex1.Address" >
<property name="street" value="sahajanand" />
<qualifier value="address1"/>
</bean>
我有3个数据源,我设置如下: 我正在尝试将它们自动加入到我的消费者阶层中,如下所示:
我将Spring 3.2.4与JavaFX结合使用,并希望实现一种方法,其中操作将在事务中执行。我在控制器中的代码如下所示: 以及我的应用程序上下文: 尝试运行时,我收到以下错误消息: 该方法存在。删除注释,或者将方法从public更改为private,或者从配置中删除bean,程序就会运行,但事务注释根本不起作用。删除代理目标会导致另一个错误。
我的spring应用程序有点小问题。下面是我的代码: (存储库) 下面是我的简单服务类: 更新:配置
我正在为我的Spring Boot应用程序配置OAuth2。我找到了一个解释它的链接https://gigsterous.github.io/engineering/2017/03/01/spring-boot-4.html. 这是我的OAuth2Config文件: 这是我的appUSerService文件: 但是我得到了这个错误:这一行有多个标记——这个位置不允许使用注释@限定符——注释类型限定
我想允许一个域的跨源请求。我的项目使用Spring,所以我想利用新的CORS支持。 我遵循下面的示例https://spring.io/blog/2015/06/08/cors-support-in-spring-framework#disqus_thread并尝试了第一个版本。我的控制器注释如下所示: 如果我理解正确的话,mvc-config是一种替代方法。我也试过了: 对于这两种方法,响应似乎
因此,我试图在IntelliJ中使用项目配置设置中的spring选项启动一个新的web项目,但当我最终获得项目设置时,似乎我创建的任何新控制器都被忽略了,即使我对它们进行了注释。@RequestMapping似乎从未被映射。我所能访问的只是位于web目录根目录中的文件。 在无法使其工作之后,我切换到Gradle,以便可以导入一些额外的库来测试我的项目。我的gradle文件如下所示: 是否有某种配置