spring ioc解读

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hhc0917/article/details/81533233

ioc
顾名思义 就是控制反转 资源本身不在new对象 交给spring进行管理 ,不用spring之前 都是资源自给自足 ,交给spring后 在合适的时机 只需把所需要的资源注入进来就可以实现了.
spring的ioc控制反转、依赖注入,“控制反转”你不需要再代码中关心何时用new创建类的实例。你用的时候spring会创建这个实例,并且注入到你需要使用的地方。
如果不用spring,你需要在你用到实例的各个地方不停new。交给spring后,你只需要,在代码里直接定义完配置好。用就可以了!
到底该如何交给spring来管理呢 又是如何注入呢?
代码式注入:
注入时:
spring提供了@compoment @Configuration @controller @service @repository @bean等等
自定义资源注入时一般使用@Configuration
创建资源时:
@resource @Autoware

@bean又是什么??
把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean或者给出一个Bean

< beans>< /beans>标签相当于@Configuration

用法实例:
1.配置文件方式

< beans>
< bean id=”course” class=”demo.Course”>
< property name=”module” ref=”module”/>
< /bean>
< bean id=”module” class=”demo.Module”>
< property name=”assignment” ref=”assignment”/>
< /bean>
< /beans>

2.注解模式

@Configuration
public class AppContext {
@Bean
public Course course() {
Course course = new Course();
return course;
}
@Bean
public Module module() {
Module module = new Module();
module.setAssignment(assignment());
return module;
}
@Bean
public Assignment assignment() {
return new Assignment();
}
}

使用 AnnotationConfigApplicationContext 注册配置类

public static void main(String[] args) {
ApplicationContext ctx =new AnnotationConfigApplicationContext(AppContext.class);
Course course = ctx.getBean(Course.class); course.getName();
}

使用所述上下文类的 register 方法来注册配置类

public static void main(String[] args) {
ApplicationContext ctx =new AnnotationConfigApplicationContext();
ctx.register(AppContext.class)
}

总结:
1. 凡是子类及带属性、方法的类都注册Bean到Spring中,交给它管理;
2、@Bean 用在方法上,告诉Spring容器,你可以从下面这个方法中拿到一个Bean

猜你喜欢

转载自blog.csdn.net/Hhc0917/article/details/81533233