通过Java的方式编写一个配置类(用于配置的类,在类上加@Configuration),可以做到完全脱离XML配置文件。主要有两种实现方式:
- @Configuration+@Bean
- User类:可以通过注解为属性赋值
public class User { @Value("YuJing") private String name; @Autowired private Cat cat; public String getName() { return name; } // public void setName(String name) { // this.name = name; // } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", cat=" + cat.getAge() + '}'; } }
- Cat类
public class Cat { @Value("2") private String age; public String getAge() { return age; } }
- 配置类:@Configuration---配置文件的约束;@Bean---配置文件中显式配置的<bean/>。这种方式要通过方法名获取相应的bean,即context.getBean("getUser")。
@Configuration //@ComponentScan("com.jing") public class AppConfig { @Bean public User getUser(){ return new User(); } @Bean public Cat getCat(){ return new Cat(); } }
- User类:可以通过注解为属性赋值
- @Configuration+@ComponentScan("com.jing")+@Component
- User类:@Component,通过注解的方式配置bean。使用注解的前提下是有扫描器。
@Component public class User { @Value("YuJing") private String name; @Autowired private Cat cat; public String getName() { return name; } // public void setName(String name) { // this.name = name; // } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", cat=" + cat.getAge() + '}'; } }
- Cat类:@Component,通过注解的方式配置bean。
@Component public class Cat { @Value("2") private String age; public String getAge() { return age; } }
- 配置类:@ComponentScan相当于配置文件中的<context:component-scan base-package="com.jing"/>,用于扫描并注册所有包中定义的bean。
@Configuration @ComponentScan("com.jing") public class AppConfig { // @Bean // public User getUser(){ // return new User(); // } // // @Bean // public Cat getCat(){ // return new Cat(); // } }
总结:配置bean有三种方式:配置文件、注解@Component、或者配置类中的@Bean,无论使用哪种方式,java中所有的类都需要配置成IOC容易中的bean,交由IOC管理。前两种方法常用来配置本应用以内的类;而第三种方式常用来配置应用以外的类,比如jdbc连接,这种我们无法接触到源码,即无法修改源程序的配置文件以及在源码的类上直接加注解。
- User类:@Component,通过注解的方式配置bean。使用注解的前提下是有扫描器。
总结
- 配置bean有三种方式:
- 配置文件
- 类上加注解@Component
- 配置类中的通过@Bean注解
- 无论哪种方式,我们的目标是将使用到的类注册到IOC容器当中,交由IOC管理。
- 前两种方式常用来配置本应用以内的类,即我们可以访问源代码,并可以直接修改(修改配置文件或者加注解)
- 第三种方式的用途:配置应用以外的类,比如jdbc连接。这种我们无法接触到源码,即无法对其进行修改。