JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。
1、编写一个实体类,Dog
@Component //将这个类标注为Spring的一个组件,放到容器中!
public class Dog {
public String name = "dog";
}
2、新建一个config配置包,编写一个MyConfig配置类
@Configuration //代表这是一个配置类
public class MyConfig {
@Bean //通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
public Dog dog(){
return new Dog();
}
}
3、测试
@Test
public void test2(){
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(MyConfig.class);
Dog dog = (Dog) applicationContext.getBean("dog");
System.out.println(dog.name);
}
4、成功输出结果!
导入其他配置如何做呢?
1、我们再编写一个配置类!
@Configuration //代表这是一个配置类
public class MyConfig2 {
}
2、在之前的配置类中我们来选择导入这个配置类
@Configuration
@Import(MyConfig2.class) //导入合并其他配置类,类似于配置文件中的 inculde 标签
public class MyConfig {
@Bean
public Dog dog(){
return new Dog();
}
}
关于这种Java类的配置方式,我们在之后的SpringBoot 和 SpringCloud中还会大量看到,我们需要知道这些注解的作用即可!
Spring注解:
注解 | 作用 |
---|---|
@Component | 标记一个普通的Spring组件,将类创建为Spring的bean,并加入IoC容器中 |
@Repository | 标记数据访问层(Dao层)的类,表示它负责与数据库或其他数据源进行交互 |
@Service | 标记服务层(Service层)的类,表示它提供某种业务逻辑的服务 |
@Controller | 标记控制器类,处理Spring MVC应用程序中接收到的请求,并根据@RequestMapping等注解的配置进行路由 |
@Autowired | 用于进行依赖注入,将与被标注属性或构造函数类型匹配的bean实例自动注入到类中 |
@Value | 用于给属性赋值,从配置文件或环境变量中读取配置值,并将其注入到被标注属性中 |
@Configuration | 标记配置类,告诉Spring容器这是一个Java配置类,Spring会根据配置类中的@Bean注解配置bean,并将它们添加到IoC容器中 |
@Import | 导入其他配置类或组件类,使得被导入的类也能被Spring容器管理 |
@ComponentScan | 指定要扫描的包路径,自动扫描并注册包下的所有被@Component等注解标记的类 |
@Bean | 在@Configuration配置类中,使用@Bean注解标注方法,将方法返回的对象作为一个bean添加到Spring容器中 |
@Conditional | 根据指定条件动态地决定是否创建或注册bean或配置类 |
@Qualifier | 用于标识注入时的具体的bean,当多个bean满足条件时,用于指定具体需要注入的bean |
@Profile | 根据指定的profile条件选择性地注册或创建bean |
@RequestMapping | 用于映射请求路径与处理方法,将HTTP请求与Controller类中的特定方法进行绑定,指定处理请求的URL路径、请求方法、参数等 |
@PathVariable | 用于获取URL路径中的变量值,将URL路径中的变量映射到方法的参数中 |
@RequestParam | 用于获取请求参数的值,将请求参数映射到方法的参数中 |
@ResponseBody | 用于将方法的返回值直接作为HTTP响应的内容返回,通常用于RESTful API的开发 |
@ExceptionHandler | 定义全局的异常处理方法,处理指定的异常类型或所有异常,用于统一处理异常并返回自定义的异常响应 |
@Validated | 用于开启Spring对请求参数的验证,可以指定验证的分组、验证顺序等属性 |
Spring MVC注解:
注解 | 作用 |
---|---|
@RequestMapping | 用于映射请求路径与处理方法,将HTTP请求与Controller类中的特定方法进行绑定,指定处理请求的URL路径、请求方法、参数等 |
@PathVariable | 用于获取URL路径中的变量值,将URL路径中的变量映射到方法的参数中 |
@RequestParam | 用于获取请求参数的值,将请求参数映射到方法的参数中 |
@ResponseBody | 用于将方法的返回值直接作为HTTP响应的内容返回,通常用于RESTful API的开发 |
@RequestBody | 用于将HTTP请求的内容映射到方法的参数中,适用于接收JSON/XML等格式的请求体数据 |
@ControllerAdvice | 类级别的注解,用于定义全局的异常处理和数据绑 |
以下是使用Java类配置Spring和Spring MVC时常用的注解:
Spring注解:
注解 | 作用 |
---|---|
@Configuration | 声明一个Java配置类,用于替代传统的XML配置文件 |
@Bean | 在@Configuration配置类中,使用@Bean注解标注方法,将方法返回的对象作为一个bean添加到Spring容器中 |
@ComponentScan | 指定要扫描的包路径,自动扫描并注册包下的所有被@Component等注解标记的类 |
@Component | 标记一个普通的Spring组件,将类创建为Spring的bean,并加入IoC容器中 |
@Repository | 标记数据访问层(Dao层)的类,表示它负责与数据库或其他数据源进行交互 |
@Service | 标记服务层(Service层)的类,表示它提供某种业务逻辑的服务 |
@Controller | 标记控制器类,处理Spring MVC应用程序中接收到的请求,并根据@RequestMapping等注解的配置进行路由 |
@Autowired | 用于进行依赖注入,将与被标注属性或构造函数类型匹配的bean实例自动注入到类中 |
Spring MVC注解:
注解 | 作用 |
---|---|
@Configuration | 声明一个Java配置类,用于替代传统的XML配置文件 |
@EnableWebMvc | 启用Spring MVC的配置,用于替代传统的XML配置文件 |
@Controller | 标记控制器类,处理Spring MVC应用程序中接收到的请求,并根据@RequestMapping等注解的配置进行路由 |
@RequestMapping | 用于映射请求路径与处理方法,将HTTP请求与Controller类中的特定方法进行绑定,指定处理请求的URL路径、请求方法、参数等 |
@PathVariable | 用于获取URL路径中的变量值,将URL路径中的变量映射到方法的参数中 |
@RequestParam | 用于获取请求参数的值,将请求参数映射到方法的参数中 |
@ResponseBody | 用于将方法的返回值直接作为HTTP响应的内容返回,通常用于RESTful API的开发 |
@RequestBody | 用于将HTTP请求的内容映射到方法的参数中,适用于接收JSON/XML等格式的请求体数据 |
@Valid | 用于开启Spring对请求参数的验证 |
@ExceptionHandler | 定义全局的异常处理方法,处理指定的异常类型或所有异常,用于统一处理异常并返回自定义的异常响应 |
这些注解可以帮助我们用Java类来配置Spring和Spring MVC,替代传统的XML配置文件,提供更灵活和简洁的配置方式。