下面是“Spring常用配置及解析类说明”的详细攻略。
1. Spring常用配置
1.1 XML配置
Spring框架最初是以XML配置为主的,XML配置的方式包括声明bean和对bean进行依赖注入两个方面。
1.1.1 声明bean
在XML配置文件中,声明bean的方式如下:
<bean id="beanId" class="className">
<property name="propertyName" value="propertyValue"/>
</bean>
其中,beanId
表示这个bean的唯一标识符,className
表示要实例化的类名。在这个bean中可以使用 <property>
元素设置类的属性值。例如:
<bean id="person" class="com.example.Person">
<property name="name" value="Tom"/>
<property name="age" value="18"/>
</bean>
上面的例子中,我们通过XML配置文件,声明了一个 Person
类的bean,其中包含两个属性,一个是名字,一个是年龄。
1.1.2 依赖注入
在XML配置文件中,对bean进行依赖注入的方式如下:
<bean id="beanId" class="className">
<property name="propertyName">
<ref bean="refBeanId" />
</property>
</bean>
其中,ref bean="refBeanId"
表示要注入的是另一个bean的引用。例如:
<bean id="person" class="com.example.Person">
<property name="name" value="Tom"/>
<property name="age" value="18"/>
<property name="address">
<ref bean="address"/>
</property>
</bean>
<bean id="address" class="com.example.Address">
<property name="city" value="Beijing"/>
<property name="street" value="East 3rd Ring Road"/>
</bean>
上面的例子中,我们通过XML配置文件,声明了一个 Person
类的bean,其中包含了一个 Address
类型的属性,这个属性是通过引用另一个bean实现的。
1.2 Java配置
Java配置相对于XML配置更加灵活,它允许我们使用Java代码来配置bean,而不必再编写XML配置文件。Java配置的方式通常使用@Configuration注解和@Bean注解来实现。
1.2.1 声明bean
在Java配置文件中,声明bean的方式如下:
@Configuration
public class AppConfig {
@Bean
public Person person() {
Person person = new Person();
person.setName("Tom");
person.setAge(18);
return person;
}
}
使用 @Bean
注解来标注一个方法,这个方法的返回值就是一个bean。上面的例子中,我们通过Java配置文件,声明了一个 Person
类的bean。
1.2.2 依赖注入
在Java配置文件中,对bean进行依赖注入的方式如下:
@Configuration
public class AppConfig {
@Bean
public Person person() {
Person person = new Person();
person.setName("Tom");
person.setAge(18);
person.setAddress(address());
return person;
}
@Bean
public Address address(){
Address address = new Address();
address.setCity("Beijing");
address.setStreet("East 3rd Ring Road");
return address;
}
}
这个例子中,我们通过Java配置文件,声明了一个 Person
类的bean,并将它的一个 Address
类型的属性注入了一个 Address
类的bean。
2. Spring解析类说明
2.1 PropertyPlaceholderConfigurer
在实际项目中,我们经常会遇到需要配置一些properties属性文件的情况。PropertyPlaceholderConfigurer
类就是用来解析这种属性文件的类。
我们可以将配置文件中的属性值通过 ${}
的形式引用,实现外部配置和容器内的bean的属性搭配。例如:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}" />
<property name="jdbcUrl" value="${jdbc.jdbcUrl}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="jdbc.properties" />
</bean>
在这个例子中,PropertyPlaceholderConfigurer
会自动找到名为 jdbc.properties
的属性文件,并将其中的属性值解析到 ${}
中。
2.2 ApplicationContextAware
有些时候,我们在bean中需要获取ApplicationContext上下文对象,例如在使用Hibernate等ORM框架的时候。ApplicationContextAware
就是用来获取ApplicationContext上下文对象的类。
我们只需要在自己的bean中实现 ApplicationContextAware
接口,并在bean初始化的时候,调用 setApplicationContext()
方法即可,例如:
public class MyBean implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
public void doSomething() {
// 使用ApplicationContext上下文对象执行一些操作
// ...
}
}
示例一:
代码说明:
示例一简单演示了Spring XML配置的方式,其中我们通过XML配置文件声明了一个 Person
类的bean,并将它的一个 Address
类型的属性注入了一个 Address
类的bean。
代码:
<!-- applicationContext.xml -->
<bean id="person" class="com.example.Person">
<property name="name" value="Tom"/>
<property name="age" value="18"/>
<property name="address">
<ref bean="address"/>
</property>
</bean>
<bean id="address" class="com.example.Address">
<property name="city" value="Beijing"/>
<property name="street" value="East 3rd Ring Road"/>
</bean>
// Person.java
public class Person {
private String name;
private int age;
private Address address;
public Person() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
// Address.java
public class Address {
private String city;
private String street;
public Address() {}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
示例二:
代码说明:
示例二简单演示了Spring Java配置的方式,其中我们通过Java配置文件声明了一个 Person
类的bean,并将它的一个 Address
类型的属性注入了一个 Address
类的bean。
代码:
// AppConfig.java
@Configuration
public class AppConfig {
@Bean
public Person person() {
Person person = new Person();
person.setName("Tom");
person.setAge(18);
person.setAddress(address());
return person;
}
@Bean
public Address address(){
Address address = new Address();
address.setCity("Beijing");
address.setStreet("East 3rd Ring Road");
return address;
}
}
// Person.java
public class Person {
private String name;
private int age;
private Address address;
public Person() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
// Address.java
public class Address {
private String city;
private String street;
public Address() {}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
以上就是“Spring常用配置及解析类说明”的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring常用配置及解析类说明 - Python技术站