@ComponentpublicclassUser{publicUser(){
System.out.println("User was Instantiated");}}@ComponentScan(basePackages ="com.demo.test")publicclassConfigClass{}publicclassMainClass{publicstaticvoidmain(String[] args){
AnnotationConfigApplicationContext ctx =newAnnotationConfigApplicationContext(ConfigClass.class);
System.out.println(ctx.getBean("user"));}}//结果//User was Instantiated//com.demo.test.User@161b062a
@Bean注解:用在会被Spring实例化的类中,通常用来引入外部组件
publicclassUser{publicUser(){
System.out.println("User was Instantiated");}}publicclassConfigClass{@Bean//@Bean(value="u")//Bean的name默认为方法名,可以自己指定//@Lazy//配合@Bean实现懒加载public User user(){returnnewUser();}}publicclassMainClass{publicstaticvoidmain(String[] args){
AnnotationConfigApplicationContext ctx =newAnnotationConfigApplicationContext(ConfigClass.class);
System.out.println(ctx.getBean("user"));}}//结果//User was Instantiated//com.demo.test.User@971d0d8
@Conditional注解:判断是否实例化该Bean,通常与@Bean配合使用
//与@Bean注解配合publicclassUser{publicUser(){
System.out.println("User was Instantiated");}}publicclassUserConditionimplementsCondition{@Overridepublicbooleanmatches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata){returnfalse;}}publicclassConfigClass{@Bean@Conditional(value = UserCondition.class)public User user(){returnnewUser();}}publicclassMainClass{publicstaticvoidmain(String[] args){
AnnotationConfigApplicationContext ctx =newAnnotationConfigApplicationContext(ConfigClass.class);
System.out.println(ctx.getBean("user"));}}//结果//No bean named 'user' available
//与@ComponentScan注解配合@Component@Conditional(value = UserCondition.class)publicclassUser{publicUser(){
System.out.println("User was Instantiated");}}publicclassUserConditionimplementsCondition{@Overridepublicbooleanmatches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata){returnfalse;}}@ComponentScan(basePackages ="com.demo.test")publicclassConfigClass{}publicclassMainClass{publicstaticvoidmain(String[] args){
AnnotationConfigApplicationContext ctx =newAnnotationConfigApplicationContext(ConfigClass.class);
System.out.println(ctx.getBean("user"));}}//结果//No bean named 'user' available
@Import注解:用在会被Spring实例化的类上,通常用来引入外部组件,组件ID为全类名路径
publicclassUser{publicUser(){
System.out.println("User was Instantiated");}}@Import(value ={User.class})publicclassConfigClass{}publicclassMainClass{publicstaticvoidmain(String[] args){
AnnotationConfigApplicationContext ctx =newAnnotationConfigApplicationContext(ConfigClass.class);
System.out.println(ctx.getBean("com.demo.test.User"));}}//结果//User was Instantiated//com.demo.test.User@5d20e46
将Bean交给Spring IOC容器管理的相关注解:@ComponentScan注解:用在会被Spring实例化的类上,扫描@Controller、@Service、@Repository、@Component@Componentpublic class User { public User() { System.out.println("User was Instantiated"); }}@ComponentScan(basePackages = "co