从笔记3开始,之后主要使用java类的配置方式,因为感觉周围的同学也没什么人喜欢使用xml配置的方式。
java配置文件:
package com.glodon.springdemo3;
import org.springframework.context.annotation.*;
@Configuration
@ComponentScan("com.glodon.springdemo3")
@Import({ServiceConfig.class})
public class AppConfig {
@Bean
@Scope("prototype")
public HelloBean helloBean() {
return new HelloBean();
}
}
@ComponentScan注解负责扫描指定路径下的带@Component、@Service、@Controller、@Aspect注解的类。比如如果添加了@Autowired注解,在扫描路径下的@Component就可以被自动注入。
helloBean上的@Scope注解表示非单例模式,每次get到的bean都是一个单独的类。表示作用域,对应的有“singleton”
@Import注解负责导入另一个java配置类:
package com.glodon.springdemo3;
import com.glodon.springdemo3.service.GoodbyeService;
import com.glodon.springdemo3.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
public class ServiceConfig {
@Bean
@Autowired
public HelloService helloService(GoodbyeService goodbyeService) {
return new HelloService(goodbyeService);
}
}
看到helloservice上添加了@Autowired注解,在goodbyeService上添加@Component注解就能被自动注入了。
package com.glodon.springdemo3.service;
import org.springframework.stereotype.Component;
@Component
public class GoodbyeService {
}