弹簧–自动接线
Spring 是 Java 的开源应用程序开发框架,允许您使用普通的旧 Java 对象(简称 POJO )创建健壮的企业应用程序。Spring 框架可以自动注入依赖关系。Spring 容器检测那些在配置文件中指定的依赖关系以及 beans 之间的关系。这在春季被称为自动布线。相比之下,自动连接的应用程序需要更少的代码行,但同时,它给程序员提供的灵活性很小。
自动接线模式
自动布线有五种模式:
1。否
这种模式告诉框架,自动布线不应该完成。这是 Spring 使用的默认模式。
可扩展标记语言
<bean id="state" class="sample.State">
<property name="name" value="UP" />
</bean>
<bean id="city" class="sample.City"></bean>
2。别名
它使用 bean 的名称来注入依赖关系。但是,它要求属性和 bean 的名称必须相同。它在内部调用 setter 方法进行自动连接。
XML
<bean id="state" class="sample.State">
<property name="name" value="UP" />
</bean>
<bean id="city" class="sample.City" autowire="byName"></bean>
3 .by type〔t1〕
它根据 bean 的类型注入依赖关系。它在配置文件中查找属性的类类型。如果它找到匹配的 bean,它将注入属性。如果没有,程序会抛出一个错误。在这种情况下,属性和 bean 的名称可以不同。它在内部调用 setter 方法进行自动连接。
XML
<bean id="state" class="sample.State">
<property name="name" value="UP" />
</bean>
<bean id="city" class="sample.City" autowire="byType"></bean>
4。建造师
它通过调用构造函数注入所需的依赖关系。它的工作方式类似于“字节类型”模式,但它寻找构造函数参数的类类型。如果没有检测到或检测到一个以上的 bean,那么它会抛出一个错误,否则,它会在所有构造函数参数上自动连接“byType”。
XML
<bean id="state" class="sample.State">
<property name="name" value="UP" />
</bean>
<bean id="city" class="sample.City" autowire="constructor"></bean>
5。自动检测
自动检测模式使用另外两种模式进行自动连接——构造函数和字节类型。它首先尝试通过构造函数模式自动连接,如果失败,它将使用字节类型模式进行自动连接。它在 Spring 2.0 和 2.5 中工作,但是从 Spring 3.0 开始就被弃用了。
XML
<bean id="state" class="sample.State">
<property name="name" value="UP" />
</bean>
<bean id="city" class="sample.City" autowire="autodetect"></bean>
字节类型模式的示例程序
文件名:T3】State.javaT5
T7】爪哇 T9
public class State {
private String name;
public String getName() { return name; }
public void setName(String s) { this.name = s; }
}
T10T12】
文件名:T3】City.javaT5
T7】爪哇 T9
class City {
private int id;
private String name;
private State s;
public int getID() { return id; }
public void setId(int eid) { this.id = eid; }
public String getName() { return name; }
public void setName(String st) { this.name = st; }
public State getState() { return s; }
@Autowired public void setState(State sta)
{
this.s = sta;
}
public void showCityDetails()
{
System.out.println("City Id : " + id);
System.out.println("City Name : " + name);
System.out.println("State : " + s.getName());
}
}
T10T12】
春豆配置文件:
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"
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">
<bean id="state" class="sample.State">
<property name="name" value="UP" />
</bean>
<bean id="city" class="sample.City" autowire="byName"></bean>
</beans>
测试程序文件:DemoApplication.java
爪哇
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args)
{
SpringApplication.run(DemoApplication.class, args);
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
City cty = context.getBean("city", City.class);
cty.setId(01);
cty.setName("Varanasi");
State st = context.getBean("state", State.class);
st.setName("UP");
cty.setState(st);
cty.showCityDetails();
}
}
输出:
City ID : 01
City Name : Varanasi
State : UP
自动布线的优势
它需要更少的代码,因为我们不需要编写代码来显式地注入依赖关系。
自动布线的缺点
- 程序员无法控制。
- 它不能用于基元和字符串值。
版权属于:月萌API www.moonapi.com,转载请注明出处