一、搭建测试环境
在上一篇博客的基础上搭建测试环境:
实体类
@Component
public class user {
@Value("lzh")
private String name;
@Value("20")
private int age;
public user() {
}
public user(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "user{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
配置类
@Configuration
public class javaConfig1 {
@Bean
public user users(){
return new user();
}
}
二、基于java进行配置
1.@Bean
和 @Configuration的基本概念
@Bean
注解用来表示一个方法实例化、配置和初始化了一个新的对象,由Spring IoC容器管理。此外,@Bean
注解的作用与 <bean/>
元素的作用相同。你可以在任何Spring @Component
中使用 @Bean
注解的方法。然而,它们最常被用于 @Configuration
Bean。
@Configuration
来注解一个类,表明它的主要目的是作为Bean定义的来源。此外, @Configuration
类允许通过调用同一个类中的其他 @Bean
方法来定义bean间的依赖关系。
2.@component
@Component
用于标记在类上,表明这个类是一个 Spring 组件,Spring 容器会扫描到这些注解并自动将这些类注册为 Spring 应用上下文中的 bean。@Component
注解的类默认是单例的,但可以通过 @Scope
注解来改变其作用域。
三个衍生注解:它们都是 @Component
的特化形式,用于更清晰地表示组件的角色
- @Controller:web层
- @Service:service层
- @Repository:dao层
3.@Bean
@Bean
注解主要用于在 Java 配置类中声明一个 bean,并将其注册到 Spring 的应用上下文中。当一个 Java 配置类被解析时,需要调用被 @Bean
注解标记的方法,并将该方法的返回值作为一个 bean 实例放入 Spring 容器中,由 Spring 容器来管理这个 bean。
1.声明一个bean
@Configuration
public class javaConfig1 {
@Bean
public user users(){
return new user();
}
}
与xml相对应,users 为 标签中的 id 属性,user则为 class属性
2.其它用法
指定 bean 名称:可以使用 @Bean
注解的 name
属性来指定 bean 的名称。
条件化 bean 创建:结合 @Conditional
注解(或其派生注解,如 @ConditionalOnMissingBean
)来实现基于条件的 bean 创建。
依赖注入:@Bean
方法可以像普通 Java 方法一样接收参数,Spring 会自动注入这些参数,从而支持复杂的依赖关系。
初始化方法和销毁方法:可以通过 @Bean
注解的 initMethod
和 destroyMethod
属性来指定 bean 的初始化和销毁方法,但更推荐使用 @PostConstruct
和 @PreDestroy
注解。
4.@Configuration
@Configuration
用于指示一个类声明了多个 @Bean
方法,并且这个类可以被 Spring 容器作为 Bean 定义的源来处理。@Configuration
注解告诉 Spring 这个类包含了 Spring 容器管理的 bean 的声明。
5.测试
@Test
public void test2() {
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(javaConfig1.class);
user user = (user) applicationContext.getBean("users");
System.out.println(user.toString());
}
6..@import导入其它配置类
新建一个配置类
public class javaConfig2 {
@Bean
public user user2(){
return new user();
}
}
修改
@Configuration
@Import(javaConfig2.class)
public class javaConfig1 {
@Bean
public user users(){
return new user();
}
}