spice and wolf
code
interview
springIOC和DI
springIoc(bean标签)的xml配置
bean标签作用。用于配制被spring容器管理的bean的信息,默认情况下调用无参构造函数。
bean标签属性。
id
class
init-method
destroy-method
scope
singleton
prototype
request
session
global session
bean实例化方式。
springDI的xml配置
springIoc的xml与注解混合配置
使用方式
spring配置文件中配置context:component-scan标签
在类上面加上@Component、@Controller、@Service、@Repository等注解
springDI的注解配置
@Autowired
默认按类型装配
由AutowiredAnnotationBeanPostProcessor类实现
是spring自带的注解
默认情况下要求依赖对象必须存在,如果不存在需要给属性赋值required=false,不然会报错
按名称装配需要配合@Qualifier注解使用
@Qualifier
在自动按照类型装配的基础之上,再按照bean的id注入
在给字段注入时不能独立使用,必须配合@Autowired一起使用
给方法参数注入时,可以独立使用
@Resource
默认按名称装配
属于J2EE JSR250规范的实现,是Java自带的
name属性一旦指定,则只会根据名称装配
@Inject
根据类型装配,如果需要按照名称装配,需要配合@Named使用
是JSR330中的规范,是Java自带的
可以用在变量、setter方法和构造函数上
@Value
给基本类型和String类型注入
可以使用占位符获取属性文件中的值
@PostConstruct
@PreDestroy
springIoc纯注解配置
改为纯注解方式需要解决的问题及解决方法
注解扫描配置如何实现替换(<context:component-scan>和<context:property-placeholder>)?用@ComponentScan注解修饰被@Configuration修饰的类,并在basePackage属性中指定扫描的包路径;用@PropertySource注解修饰被@Configuration修饰的类,并指明属性文件路径。
第三方代码不能在源代码上直接修改(增加注解),该如何注入?在@Configuration配置文件类里面加入返回相应第三方对象的方法,并用@Bean标签修饰。
去掉xml后,如何创建ApplicationContext?@Configuration注解修饰的类会替代xml文件作为spring上下文配置存在。
多个配置文件相互引用问题。在多个@Configuration类互相引用时,用@Import作为注解指明另一个配置类的地址。
创建纯注解方式上下文容器。
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
UserService service = context.getBean(UserService.class);
service.saveUser();
发表回复