目录
1.@Component、@Controller、@Service、@Repository的功能
1.@Component、@Controller、@Service、@Repository的功能
@Component:将类标识为普通bean组件,能够被spring组件扫描机制扫描
@Controller:将类标识为控制层组件,即标记为Spring Web MVC的控制器
@Service:将类标识为业务层组件
@Repository:将类标识为持久层组件
四个注解功能一样:将一个类标记为bean,只是名字不一样,这是为了开发人员看的
注意:注解要加到实现类上
2.@Required注解
位置:配置在bean的setter方法上
功能:配置的setter方法需要写在xml配置文件中,否则会抛出BeanInitializationException异常
public class Person{
private String name;
@Required
public void setName(String name){
this.name=name;
}
public string getName(){
return name;
}
}
若不配置,则报错
<bean id="person" class="com.gz.Person">
<property name="name" value="张三" />
</bean>
3.@Autowired注解
1. @Autowired功能
实现自动装配功能的注解
2. @Autowired注解其他能够标识的位置
标识在成员变量上,此时不需要设置成员变量的set方法(一般用这个,此时可以不用在创造set方法)
标识在set方法上
标识在为当前成员变量赋值的有参构造器上
3. @Autowired注解的原理
1. 默认通过byType方式,在ioc容器中通过类型匹配某个bean为属性赋值(一般都是这这个就可以)
2. 若有多个类型匹配的bean,此时会自动转换为byName的方式实现自动装配的效果;即将要赋值的属性的属性名作为bean的id匹配某个bean为属性赋值
3. 若byType和byName的方式都无法实现自动装配,即IOC容器中有多个类型匹配的bean,且这些bean的id和要赋值的属性的属性名都不一致,此时会抛出异常:NoUniqueBeanDefinitionException(这种情况几乎不会发生,一般默认byType就能处理,因为一个类型的bean不会在ioc容器中存在多个)
4. 此时可以在要赋值的属性上,添加一个注解@Qualifier;通过该注解的value属性值,指定某个bean的ID,将这个bean为属性赋值
4.@Qualifier注解
创建了多个相同类型的bean,但仅装配其中一个bean时,则使用@Qualifier 和 @Autowired配合,来指定一个确定的bean。
5.@ReuqestMapping注解
功能:将当前浏览器所发送的请求映射到标识到的方法中执行,然后让该方法来处理请求
代码示例:
@RequestMapping("/")
public String testIndex(){
return "index";
}
6.什么是Spring DAO
概念:DAO,Data Access Object:数据访问对象
实现:Spring以统一的方式整合底层的持久化技术,然而不同的持久化实现技术异常体系不同。Spring提供统一的异常体系,将不同的持久化技术异常转换为Spring的异常,从而定义与持久化技术无关的DAO接口。
7.Spring DAO的作用
1.使得JDBC、Hibernate等的数据访问技术更容易以一种统一的方式工作
2.能够在持久性技术之间切换
3.编写代码时无需考虑捕获不同技术的异常
8.Spring框架中的单例bean是什么?线程安全吗?
单例:将bean中的标签设置为singleton,表示在Spring IoC容器中只有一个实例
线程是否安全:是线程不安全的
9.JdbcTemplate是什么
位置:是Spring JDBC API提供的一个类
作用:提供API解决:将数据库数据转换为基本数据类型或对象
执行写好的或可调用的数据库sql语句
提供自定义的数据错误处理
10.Spring支持的事务管理类型
编程式事务:编程式是具体实现事务都需要编程实现,难以维护
声明式事务:声明式只需要声明需求即可由框架代为实现,使用注解和xml配置管理事务