spring ioc笔记

作者: 塔塔斯坦 | 来源:发表于2019-06-29 16:37 被阅读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>)

    相关文章

      网友评论

        本文标题:spring ioc笔记

        本文链接:https://www.haomeiwen.com/subject/nsvpcctx.html