Spring 中使用JavaConfig配置Spring
笔记目的:
Spring的知识回顾,有些忘记了。
温故而知新为SpringBoot打一下基础
![](https://i-blog.csdnimg.cn/blog_migrate/9ad5f5efadcfff3ddd7fca352df2e393.bmp)
- User
// @Component 的意思是这个类被Spring 接管了,注册到了容器中
@Component
public class User {
@Value("Tom")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
- javaConfig 配置类第一种使用
@Configuration
@ComponentScan("com.codebar.pojo")
public class javaConfig {
public User getUser(){
return new User();
}
}
@Configuration
// 这也是一个Spring容器托管,注册到容器中,因为他本身就是一个@Component
// @Configuration 代表这是一个配置类,等价于.xml (我是配置文件,暂且当作一个标识,标识自己是配置文件)
// 等价于 <beans> </beans>
@ComponentScan(“com.codebar.pojo”) 等价于xml文件中的
作用:扫描包
和@Component 联用,就会扫描到指定位置的哪个类
<context:component-scan base-package="com.codebear.pojo"/>
- javaConfig 的第二种使用
@Configuration
public class javaConfig {
@Bean
public User getUser(){
return new User(); // 就是返回注册到bean中的对象
}
}
@Bean
注册一个bean,就相当于 xml 里的bean标签
这个方法的名字就相当于bean标签中的 id的属性
这个方法的返回值相当于bean标签中的 class属性
<!--xlm 参照-->
<!--bean就是java对象 , 由Spring创建和管理-->
<bean id="hello" class="com.codebear.pojo.Hello">
<property name="str" value="Spring"/>
</bean>
这里 使用@Bean 和 @Configuration 注解
那么在前面中的User类中 就不需要使用@Component注解
- 测试类
public class MyTest03 {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(javaConfig.class);
User user = context.getBean("getUser",User.class); // 这里的名字就是Bean的名字 可以@Bean("user") 这里的名字就是user了
System.out.println(user.getName());
}
}
ApplicationContext context = new AnnotationConfigApplicationContext(javaConfig.class);
// 完全使用配置类的方法的话,只能通过AnnotationConfig 上下文来获取容器,通过配置类的class对象去加载
-
补充:
配置多个Bean (导入其它配置)
// 编写一个配置类
@Configuration //代表这是一个配置类
public class Config2 {
}
@Configuration
@Import(Config2.class) //使用@import导入合并其他配置类,类似于配置文件中的 inculde 标签
public class Config {
@Bean
public User getUser(){
return new User();
}
}