之前我们都是在xml文件中定义bean的,比如:
1
2
3
4
5
6
7
8
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
<
bean
id="helloBean" class="com.mkyong.hello.impl.HelloWorldImpl">
</
beans
>
|
其实我们可以使用注解来完成这些事情,例如下面的代码,完成的功能和上面的xml配置的功能是一样的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import
org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration;
import
com.mkyong.hello.HelloWorld;
import
com.mkyong.hello.impl.HelloWorldImpl;
@Configuration
public
class
AppConfig {
@Bean
(name=
"helloBean"
)
public
HelloWorld helloWorld() {
return
new
HelloWorldImpl();
}
}
|
想象一个场景,我们有一个很大的工程项目,如果将所有的bean都配置在一个xml文件中,那么这个文件就会非常的大。所以在很多的时候我们都会将一个大的xml配置文件分割为好几份。这样方便管理,最后在总的那个xml文件中导入就行了,比如:
1
2
3
4
5
6
7
8
9
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
<
import
resource="config/customer.xml"/>
<
import
resource="config/scheduler.xml"/>
</
beans
>
|
但是现在我们也可以使用JavaConfig来完成同样的工作了:
1
2
3
4
5
6
7
8
|
import
org.springframework.context.annotation.Configuration;
import
org.springframework.context.annotation.Import;
@Configuration
@Import
({ CustomerConfig.
class
, SchedulerConfig.
class
})
public
class
AppConfig {
}
|
我们对这个例子来看一个demo:
CustomerBo.java
1
2
3
4
5
6
7
8
|
public
class
CustomerBo {
public
void
printMsg(String msg) {
System.out.println(
"CustomerBo : "
+ msg);
}
}
|
SchedulerBo.java
1
2
3
4
5
6
7
8
|
public
class
SchedulerBo {
public
void
printMsg(String msg) {
System.out.println(
"SchedulerBo : "
+ msg);
}
}
|
现在我们来使用注解:
1
2
3
4
5
6
7
8
9
10
|
@Configuration
public
class
CustomerConfig {
@Bean
(name=
"customer"
)
public
CustomerBo customerBo(){
return
new
CustomerBo();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
|
@Configuration
public
class
SchedulerConfig {
@Bean
(name=
"scheduler"
)
public
SchedulerBo suchedulerBo(){
return
new
SchedulerBo();
}
}
|
AppConfig.java
1
2
3
4
5
6
7
8
|
import
org.springframework.context.annotation.Configuration;
import
org.springframework.context.annotation.Import;
@Configuration
@Import
({ CustomerConfig.
class
, SchedulerConfig.
class
})
public
class
AppConfig {
}
|
然后运行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
class
App {
public
static
void
main(String[] args) {
ApplicationContext context =
new
AnnotationConfigApplicationContext(
AppConfig.
class
);
CustomerBo customer = (CustomerBo) context.getBean(
"customer"
);
customer.printMsg(
"Hello 1"
);
SchedulerBo scheduler = (SchedulerBo) context.getBean(
"scheduler"
);
scheduler.printMsg(
"Hello 2"
);
}
}
|