工作生活

spring ioc笔记

2019-06-29  本文已影响0人  塔塔斯坦

ioc容器本质上是一个map实现的


spring核心包4个

spring-beans-

spring-context-

spring-core-

spring-expression-

另外的依赖日志

commons-logging-


将组件加入ioc容器

1.4种注解,这4个注解可以随便加,spring不会验证,这4个区别是给程序员看的

@Controller  推荐给控制器层的组件加(servlet)

@Service  推荐给业务逻辑层的组件加(service层)

@Repository 给数据库层(持久化层、dao)的组件

@Component 给不属于以上几层的组件添加这个注解

2.还要告诉spring自动扫描加了注解的组件:配置<context:component-scan

3.通过注解加组件还要导入spring的AOP包

@Repository("这个作为注入的bean的id,默认是类名首字母小写"),还可以加个注解@Scope(value="prototype")


@Autowired原理

先按类型去容器中找对应的组件,

找到多个的话,按照变量名作为id继续查找bean进行装配,也可以用Qualifier指定一个名做为id,不使用变量名作为id,

任何时候找不到报错,还可以@Autowired(required=false),这样找不到就赋值null

写Autowire的类本身也必须是spring组件?TODO

@Autowired加到方法上的话, 方法会被自动运行,并且自动装配参数

@Autowired(spring中的,最强大)还可以写成

    @Resource(j2ee,java的标准,没有required参数,扩展性强)

    @Inject(javax.inject,另外的依赖jar包)


spring的单元测试

1. 导入包spring-test-4.0.RELEASE.jar

2. testcase类头加@ContextConfiguration(locations="classpath:applicationContext.xml")

    加@RunWith(SpringJunit4ClassRunner.class)

3.要使用的bean,直接定义为成员,并且加@Autowired


泛型依赖注入

Spring中可以使用带泛型的父类类型来确定这个子类的类型

class BaseService<T>{

    @Autowired

    private BaseDAO;

}

@Service

class BookService extends BaseService(Book){} //这里边就有了BookDAO(extends BaseDAO<Book>)

上一篇下一篇

猜你喜欢

热点阅读