梦入琼楼寒有月,行过石树冻无烟

Spring Java @Configuration

@Configuration注解可从上一章Spring.Ioc中了解到,在annotation包下的ConfigAnnotation.java,即使用了@Configuration、@ComponentScan两个注解,实现了Spring applicationContext.xml的配置文件功能,而代码其意可以理解为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package annotation;
package annotation;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("annotation")
public class ConfigAnnotation {
/*
* @Configuration 声明该类是一个配置类,类似与Spring的XML配置文件
* @ComponentScan 可自动扫描“annotation”包下的使用注解,并注册为Bean
*/

其中@Configuration将ConfigAnnotation.java成为了一个配置类,根据@Configuration注解,可让ConfigAnnotaation.java类成为相当于Spring XML中的配置文件。而@ComponentScan注解实现了Spring XML配置文件的语法“<context:component - scan base -package="Bean 包路径”/>

Dao

Java Spring TestDao.java

1
2
3
4
5
package annotation.dao;

public interface TestDao {
public void save();
}

Spring IoC TestDao.java

1
2
3
4
5
package annotation.dao;

public interface TestDao {
public void save();
}

Service

Java Spring TestServce

1
2
3
4
5
6
7
8
9
10
11
package service;
import dao.TestDao;
public class TestService {
TestDao testDao;
public void setTestDao (TestDao testDao) {
this.testDao = testDao;
}
public void save() {
testDao.save();
}
}

Spring IoC TestService

1
2
3
4
package annotation.service;
public interface TestService {
public void save();
}

javaConfig

JavaConfig.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package javaConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import controller.TestController;
import dao.TestDao;
import service.TestService;
@Configuration
public class JavaConfig {
@Bean
public TestDao getTestDao() {
return new TestDao();
}


@Bean
public TestService getTestService() {
TestService testservice = new TestService();
testservice.setTestDao(getTestDao());
return testservice;
}

@Bean
public TestController getTestController() {
TestController testcontroller = new TestController();
testcontroller.setTestService(getTestService());
return testcontroller;

}

}

TestConfig.java

1
2
3
4
5
6
7
8
9
10
11
12
package javaConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import controller.TestController;
public class TestConfig {
public static void main (String args[]) {
AnnotationConfigApplicationContext annotationconfigapplicationcontext =
new AnnotationConfigApplicationContext(JavaConfig.class);
TestController testcontroller = annotationconfigapplicationcontext.getBean(TestController.class);
testcontroller.save();
annotationconfigapplicationcontext.close();
}
}

从Spring Java 与Spring IoC 来相比,Spring Java在类的方面很明显比Spring IoC少了一个类,但相比之下Java Script的代码比Spring IoC少了许多。但Java Script @Bean注解来完成@ComponentScan自动扫描的功能与服务。

⬅️ Go back