________________初学spring1

javabean的的三种创建、装配

1、创建一个类实现FactoryBean接口

public class RunnableFactroyBean implments FactoryBean<Jeep>{

public Jeep getObject() throws Exception{

 return Jeep();

}

public class<?> getObjectType(){

return Jeep.class;

}

public boolean isSingleton(){

return true;

}

}

使用配置类进行RunnableFactroyBean装配

2、直接创建一个Jeep类

package com.lsq.spring;

public class Jeep {

public Jeep() {

}

}

使用配置类进行装配(也可在配置类中进行依赖注入)

@Configuration

public class MyConfig {

@Bean

@scope(”prototype”)//默认单例,此为不单例

public Jeep createJeep() {

return new Jeep();

}

}

3、创建一个Jeep类,使用注解来装配

@compnent(“myJeep”)//指定名字

@repository

@service

@controller

@autowired 依赖注入

@resource  JSR 250注解

 @Inject Javax inject JSR330

public class Jeep {

}

调用方法 

1、通过类型获取

System.out.println(context.getBean(Jeep.class));

context.getBeansOfType(User.class);//获取到的是一个map

2、通过名字调用   两种方式 1⃣️默认为方法名 2⃣️配置时指定@Bean(name="createJeep")3⃣️注解版的名字获取(类名首字母小写)

System.out.println(context.getBean(“createJeep”));

三种前置、后置通知的方式

1、创建类实现 initializingbean内置init和destroy方法

public class cat  implements InitializingBean,DisPOSableBean{

public void afterPropertiesSet () throws Exception{

  syso("前置通知");

}

public void destroy () throws Exception{

  syso("后置通知");

}

}

2、创建类,自定义init和destroy方法  (建议使用方法,依赖性最好)

装配制定init和destroy方法

@Bean(initMethod=“init”,destroy=“destroy”)

3、创建bean 并创建init和destroy方法

@PostConstruct 前置

@PreDestroy后置

依赖注入时,装配优先级 @primary

或者使用时 @qualifier("方法名")

 ①annotationConfigApplicationContext(类名.class)

 ②annotationConfigApplicationContext("包名")

③componentScan(basepackages="包名",excludeFilters=@Filter(type=FilterType.ASSIGNABLE_TYPE,classes=配置类.class))

④componentScan(basepackages="包名",excludeFilters=@Filter(type=FilterType.ASSIGNABLE_TYPE,classes={配置类.class,UserController.class}))

原文地址:https://www.cnblogs.com/qiqisx/p/9330245.html