springioc的注解使用

首先创建maven项目

在pom.xml里导入依赖文件下图是导入spring的jar包

在创建三层结构

在创建个spring_ioc.xml文件

注解如下图所示

注意注解一定要标记到类上去,标记到接口上注解不生效

实体类为非三层的所以用下面的注解

让以上注解生效需要在xml文件中写入扫描包让对应注解的类自动生成bean(对象)

base-package是要扫描对应包下面的类如果类中有注解就生成bean

不是每个层都对应自己的注解也可以用其他层的注解,但是为什么最好用自己的注解呢,方便管理如下图用exclude-filter type="annnotation"可以根据注解来排除,下图排除的类型是Controller注解

下图是包含和排除的方法

用注解生成bean的过程如下图

原先基于xml的方式,会根据id来决定bean的名字,现在根据类的名字首字母小写来设置类的名字

注解的方式如何给属性赋值方法用@Value

引用外部属性资源文件的方法先在.xml文件中导入要依赖的资源包在value用${}的方式引用

#{}是获取外部bean属性的方式,注意引用的bean一定要加入注解

用@Autowired注解来代替在xml里写自动注入

如果如下图引用的接口中有多个类就会按名字匹配,名字就是对应画横线首字母小写把他写到箭头指的UserService后面就能对应的自动注入了

也可以通过修改要引用bean的名字在对应注解里如下下图的方式

还可以通过@Qualifier的方式来设置要自动注入bean的名字

还可以设置@Primary来设置主要的bean

如果需要的类要有返回值的话我们应该怎么办的,我们就得用到泛型,通过把接口改为泛型的方式

来确定我们要自动注入的值接口<User>就是自动注入UserSericeImpl,接口是<Role>就是自动注入RoleSericeImpl

@Autowired也可以写到方法和构造器上面

还可以用@Resource(来自jdk不是来自于spring了)来实现自动注入

替代xml里depond-on的方法用@DependsOn程序是从上往下加载的所以先加载Role在加载User在Role加上此注解就让User先加载了

xml里的懒加载(正常不加懒加载bean的生成就会根据记载spring上下文时加载,如果加上@Lazy就是在用到此类的时候才会生成bean)在注解中的用@Lazy替代

正常spring只会加载一次bean也就是只会创建一次类不管你getBean多少次你也只是同一个bean,如果你想同一类加载多次的话就用@Scope来代替xml里作用域

1.怎样开启注解装配

解在xml里用<context:component-scan base-package="cn.tulingxueyuan"></context:component-scan>

2.@Component, @Controller, @Repository, @Service 有何区别?

总的来说最好在那个层用那个注解方便管理,还可以增强可读性

3.当使用@AutoWired匹配到多个类型怎么解决?

上图文章中有详解

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值