Spring注解开发
Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。
Spring原始注解主要是替代的配置
注解引入
Controller(控制器:控制网站跳转逻辑)
通过bean上添加某些注解可以快速的将bean加入到ioc容器中
@Scope()单 多实例改变
1.加入注解之后要进行自动组件扫描–context:component-scan
-
base-package-指定扫描的基础包;把基础包及他下面的所有包加注解的类,自动扫描进ioc容器
3.注解之后getBean 直接类名首字母小写 组件作用域是单列的(BookDao —bookDao)一定要导入aop包
但是 作用域 跟 id 可改名 注解后直接加(id名)
注解 | 说明 |
---|---|
@Component | 使用在类上用于实例化Bean |
@Controller | 使用在web层类上用于实例化Bean |
@Service | 使用在service层类上用于实例化Bean |
@Repository | 使用在dao层类上用于实例化Bean |
@Autowired | 使用在字段上用于根据类型依赖注入 |
@Qualifier | 结合@Autowired一起使用用于根据名称进行依赖注入 |
@Resource | 相当于@Autowired+@Qualifier,按照名称进行注入 |
@Value | 注入普通属性 |
@Scope | 标注Bean的作用范围 |
@PostConstruct | 使用在方法上标注该方法是Bean的初始化方法 |
@PreDestroy | 使用在方法上标注该方法是Bean的销毁方法 |
context:exclude-filter 指定扫描包时不包含的类
type="annotation" --指定排除类型
express="全类名"
context:include-filter 指定扫描包时包含的类
@Autowired自动装配
原理:
@AutoWired
private BookService bookService
1.先按类型去类型去容器中找到对应的组件
1.1找到一个就进行赋值
1.2 找到多个bean怎么办-- 按照变量名作为id 装配的 以id作为标准进行匹配–匹配不上怎么办?---- 改变量名—@Qualifier(“xxxService”)做id
@Autowired注解的required属性指定某个属性允许不被设置
找不到返回null
@Resource ==@Autowired 都是自动自动装配 @Autowired是哥哥(Sping的)
@Resource 没办法设置找不到变null不报错的功能。
@Resource 可扩展性强 支持平台多
Spring单元测试
@ContextConfiguration(locations=" ")使用它来指定spring的配置文件的位置
@RunWith()指定用那种驱动进行单元测试 默认是Junit
好处:不用ioc.getBean获取组件 直接用autowired组件。spring为我们自动装配
测试泛型依赖注入
@Service @Service
BookService extends BaseService UserService extends BaseService
| BookDao | UserDao
BaseService(@Autowired BaseDao )
|
BaseDao – 定义了基本的增删改查方法
带泛型的父类类型
Sping可以使用带泛型的父类类型来确定子类的类型
Spring新注解
注解 | 说明 |
---|---|
@Configuration | 用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解 |
@ComponentScan | 用于指定 Spring 在初始化容器时要扫描的包。 作用和在 Spring 的 xml 配置文件中的 <context:component-scan base-package=“com.itheima”/>一样 |
@Bean | 使用在方法上,标注将该方法的返回值存储到 Spring 容器中 |
@PropertySource | 用于加载.properties 文件中的配置 |
@Import | 用于导入其他配置类 |
IOC总结
ioc是容器 帮我们管理组件(类)
1.@AutoWired:自动赋值
2,前提要加入的容器中。
容器就是一个map 保存所有创建的bean,并提供外界获取功能。
|