Spring-01 注解实现IOC
Spring框架四大原则
- 使用pojo进行轻量级和最小侵入式开发。
- 通过依赖注入和基于接口编程实现松耦合。
- 使用AOP和默认习惯进行声明式编程。
- 使用AOP和模板(template)减少模式化代码。
控制反转和依赖注入
- Spring通过依赖注入实现控制反转。
- JavaEE项目通过工厂模式实现控制反转。
- Spring的依赖注入原理也是基于工厂模式。
- Spring提供了使用xml、注解、java配置、groovy配置实现依赖注入。
测试环境说明
1.使用myeclipse创建maven项目,jdk基于1.7
2.填写maven项目GAV(三坐标)
3.项目结构
4.pom.xml文件信息
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.etc</groupId>
<artifactId>spring4demo01</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<java.version>1.7</java.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.9.RELEASE</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
常用注解
- 声明bean的注解
注解 | 说明 |
@Component | 声明组件注解,bean没有明确角色。 |
@Service | 业务逻辑层声明bean组件使用(service层或者biz层)。 |
@Repository | 数据访问层声明bean组件使用(dao层)。 |
@Controller | MVC模型中,在控制层(C)声明bean组件层使用。 |
以上注解位于:org.springframework.stereotype
- 注入bean的注解
注解 | 说明 |
@AutoWired | 按照类型装配注入,可以不通过getter和setter访问器注入。 |
@Qualifier |
通常和@AutoWired注解配合使用。 如果@AutoWired找到多个可以装配类型, 则可以通过@Qualifier注解指定bean名称注入。 用法:@Qualifier("entityDao") |
@Resource |
JSR-250提供的注解,位于javax.annotation包下。 注入时候默认按照名称注入,如果无法匹配名称,则转换为按照类型注入。 名称指属性名称或者setter访问器方法名。 |
@Inject | 用法和@AutoWired类似。 |
示例代码
数据访问层代码
package com.etc.dao; import org.springframework.stereotype.Repository; @Repository //数据访问层注解
public class EntityDao { public String getData(){
return "get data from database";
}
}
业务逻辑层代码
package com.etc.service; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.etc.dao.EntityDao; @Service //service层注解
public class EntityService { @Autowired //注入bean
private EntityDao entityDao; public String getData(){
return entityDao.getData();
} }
配置类代码
package com.etc.config; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @Configuration //声明DiConfig类为配置类
@ComponentScan("com.etc.service,com.etc.dao") //扫描service和dao包所有使用注解声明的bean,并创建和注册为spring bean
public class DiConfig { }
测试类
package com.etc.test; import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.etc.config.DiConfig;
import com.etc.service.EntityService; public class TestClass { /**测试使用注解实现IOC*/
@Test
public void test1() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
DiConfig.class);
EntityService es = context.getBean(EntityService.class);
System.out.println(es.getData());
context.close();
} }
测试结果
一月 15, 2018 9:22:54 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@442c8ab0: startup date [Mon Jan 15 09:22:54 CST 2018]; root of context hierarchy
get data from database
一月 15, 2018 9:22:54 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@442c8ab0: startup date [Mon Jan 15 09:22:54 CST 2018]; root of context hierarchy
Spring-01 注解实现IOC的更多相关文章
- java框架之Spring(2)-注解配置IOC&AOP配置
注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...
- spring基于注解的IoC以及IoC的案例
1.Spring中IoC的常用注解 1.1明确: (1)基于注解的配置和xml的配置要实现的功能都是一样的,都是要降低程序之间的耦合,只是配置的形式不一样 2.案例:使用xml方式和注解方式实现单表的 ...
- spring常用注解以IOC理解
使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...
- spring基于注解的IOC
曾经的XML配置: <bean id="accountService" class="com.itheima.service.impl.AccountService ...
- Spring(四)注解配置Ioc
原文链接:http://www.orlion.ga/216/ 一.@Autowired beans.xml配置成如下: <?xml version="1.0" encodin ...
- Spring的注解学习(ioc,aop结合)
首先引入jar包 aspectjrt.jar aspectjweaver.jar 1.dao package com.dao; public interface OkpDao { public voi ...
- spring装配注解(IOC容器加载控制)ComponentScan及ComponentScans使用
ComponentScan,只写入value,可扫描路径下装配的@Contrller.@Service.@Repository @ComponentScan(value = "com.tes ...
- Spring 基于注解的 IOC 配置
创建 spring 的 的 xml 配置 文件 <context:component-scan base-package="com.itheim"/> 指定创建容器时要 ...
- Spring IOC的描述和Spring的注解(转)
Spring常用的注解 本文系转载:转载网址: http://www.cnblogs.com/xdp-gacl/p/3495887.html http://ljhzzyx.blog.163.com/b ...
- spring的纯注解的IOC配置
package config; import com.mchange.v2.c3p0.ComboPooledDataSource;import org.apache.commons.dbutils.Q ...
随机推荐
- ADC 与实际电压值的关系
1.首先确定ADC用几位表示,最大数值是多少.比如一个8位的ADC,最大值是0xFF,就是255. 2.然后确定最大值时对应的参考电压值.一般而言最大值对应3.3V.这个你需要看这个芯片ADC模块的说 ...
- memset函数学习
memset是计算机中C/C++语言函数.将s所指向的某一块内存中的后n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存 ...
- error the @annotation pointcut expression is only supported at Java 5
eclipse搭建环境后报错 the pointcut is supported at Java 5 错误意思大致是:注释切入点表达式只支持在Java 5版本以上,我就纳闷了我安装的是jdk1.8啊, ...
- servlet 3 文件上传
1.up.jsp <%@ page language="java" pageEncoding="utf-8"%> <form action=& ...
- 洛谷 P3960 列队【线段树】
用动态开点线段树分别维护每一行和最后一列,线段树的作用是记录被选的点的个数以及查询第k个没被选的点,每次修改,从行里标记被选的点,从最后一列标记向左看齐之后少的点,然后用vector维护行列的新增点 ...
- 在IDEA中使用JSP中的out内置对象,out.println()——println红色解决方法
今天在学习JSP的时候,在jsp中使用out内置对象,开发工具用的是IDEA,结果如下图所示 郁闷了半天找度娘,可能关键字输的不准确,乱七八糟的方法一大堆,什么加依赖啊啥的,反正都不管用,最后找到一篇 ...
- win和mac系统Sublime Text 3配置编译c和c++
widows安装 安装MinGW MinGW是Minimalist GNU on Windows的首字母缩写,安装后就可以使用很多的GNU工具.GNU(GNU’s Not Unix)是linux中的一 ...
- c++ 优先级大全
重置优先级
- VS Code 自用插件备份
自用插件备份 Auto Close Tag 自动闭合标签 Atuo Rename Tag 更改前面标签的时候, 自动更改后面的闭合标签 Guides 对齐线 open-in-browser 在浏览器中 ...
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
原文出处: 张鸿洋 (Granker,@鸿洋_ ) 一.概述 记得好久以前针对ListView类控件写过一篇打造万能的ListView GridView 适配器,如今RecyclerView异军突起, ...