弹簧教程 - 弹簧汽车线束
弹簧教程 - 弹簧汽车线束
过滤以排除...
Java Bean
下面的代码定义了两个Java bean。
package com.www.w3cschool.cnmon;
public class JobTitle
{
@Override
public String toString() {
return "JobTitle [person=" + person + ", type=" + type + ", action="
+ action + "]";
}
public Employee getPerson() {
return person;
}
public void setPerson(Employee person) {
this.person = person;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
private Employee person;
private int type;
private String action;
}
员工豆
package com.www.w3cschool.cnmon;
public class Employee{
private String name;
private String address;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Employee [name=" + name + ", address=" + address + ", age="
+ age + "]";
}
}
启用@Autowired
要启用@Autowired,我们必须注册“AutowiredAnnotationBeanPostProcessor"。我们可以通过两种方式做到这一点。
- Add Spring context and <context:annotation-config /> in bean configuration file.
- Include "AutowiredAnnotationBeanPostProcessor" in bean configuration file.
这里是添加Spring上下文和< context:annotation-config />的代码。
<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-2.5.xsd">
<context:annotation-config />
<bean id="myJobTitle" class="com.www.w3cschool.cnmon.JobTitle">
<property name="action" value="buy" />
<property name="type" value="1" />
</bean>
<bean id="myEmp" class="com.www.w3cschool.cnmon.Employee">
<property name="name" value="java2s" />
<property name="address" value="address ABC" />
<property name="age" value="29" />
</bean>
</beans>
以下代码显示如何包含“AutowiredAnnotationBeanPostProcessor"在bean配置文件中。
<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="myJobTitle" class="com.www.w3cschool.cnmon.JobTitle">
<property name="action" value="buy" />
<property name="type" value="1" />
</bean>
<bean id="myEmp" class="com.www.w3cschool.cnmon.Employee">
<property name="name" value="java2s" />
<property name="address" value="address ABC" />
<property name="age" value="29" />
</bean>
</beans>
这里是要运行的代码。
package com.www.w3cschool.cnmon;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"SpringBeans.xml"});
JobTitle cust = (JobTitle)context.getBean("myJobTitle");
System.out.println(cust);
}
}
Download Java2s_Spring_autowire_1.zip
@Autowired示例
以下代码显示如何通过@Autowired在setter方法中自动布线bean
package com.www.w3cschool.cnmon;
import org.springframework.beans.factory.annotation.Autowired;
public class JobTitle
{
@Override
public String toString() {
return "JobTitle [person=" + person + ", type=" + type + ", action="
+ action + "]";
}
public Employee getPerson() {
return person;
}
@Autowired
public void setPerson(Employee person) {
this.person = person;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
private Employee person;
private int type;
private String action;
}
以下代码显示了如何通过@Autowired在构造函数上自动布线bean。
package com.www.w3cschool.cnmon;
import org.springframework.beans.factory.annotation.Autowired;
public class JobTitle
{
@Autowired
public JobTitle(Employee person) {
this.person = person;
}
@Override
public String toString() {
return "JobTitle [person=" + person + ", type=" + type + ", action="
+ action + "]";
}
public Employee getPerson() {
return person;
}
public void setPerson(Employee person) {
this.person = person;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
private Employee person;
private int type;
private String action;
}
以下代码显示了如何通过@Autowired在字段上自动布线bean。
package com.www.w3cschool.cnmon;
import org.springframework.beans.factory.annotation.Autowired;
public class JobTitle
{
@Autowired
private Employee person;
private int type;
private String action;
}
所有上述三种方法都将自动连接的Employee Java bean转换为JobTitle的person属性。
例子
这里是运行上面代码的代码。
package com.www.w3cschool.cnmon;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"SpringBeans.xml"});
JobTitle cust = (JobTitle)context.getBean("myJobTitle");
System.out.println(cust);
}
}
输出:

Download Java2s_Spring_Autowire_Setter.zip
依赖性检查
默认情况下,@Autowired注释执行依赖性检查以确保自动连接的豆存在。
如果Spring不能找到匹配的bean,它将抛出异常。要禁用@Autowired依赖性检查,请将@Autowired的“required"属性设置为false。
import org.springframework.beans.factory.annotation.Autowired;
public class JobTitle
{
@Autowired(required=false)
private Employee person;
}
使用@Qualifier选择bean
@Qualifier注释允许我们选择Java bean在字段上执行自动连接。
我们需要@Qualifier注释,当我们有两个合格的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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<bean id="myJobTitle" class="com.www.w3cschool.cnmon.JobTitle">
<property name="action" value="buy" />
<property name="type" value="1" />
</bean>
<bean id="myEmp1" class="com.www.w3cschool.cnmon.Employee">
<property name="name" value="java2s1" />
<property name="address" value="address 1" />
<property name="age" value="28" />
</bean>
<bean id="myEmp2" class="com.www.w3cschool.cnmon.Employee">
<property name="name" value="java2s2" />
<property name="address" value="address 2" />
<property name="age" value="28" />
</bean>
</beans>
在上面的xml代码配置文件中,我们有两个com.www.w3cschool.cnmon.Employee实例。 如果我们不指定哪个自动连接到JobTitle,他们都符合自动连线操作。
要选择要使用的Java bean,我们可以使用@Qualifier注释。
package com.www.w3cschool.cnmon;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class JobTitle
{
@Autowired
@Qualifier("myEmp1")
private Employee person;
}

免费 AI IDE


更多建议: