Spring
配置文件
- 多个配置优势
1.每个文件的大小比一个文件要小很多。效率高 2.避免多人竞争带来的冲突。
如果你的项目有多个模块(相关的功能在一起) ,一个模块一个配置文件。 学生考勤模块一个配置文件, 张三 学生成绩一个配置文件, 李四
多文件的分配方式:
1. 按功能模块,一个模块一个配置文件
2. 按类的功能,数据库相关的配置一个文件配置文件, 做事务的功能一个配置文件, 做service功能的一个配置文件等
基于注解的DI
2.基于注解的di: 通过注解完成java对象创建,属性赋值。 使用注解的步骤: 1.加入maven的依赖 spring-context ,在你加入spring-context的同时, 间接加入spring-aop的依赖。 使用注解必须使用spring-aop依赖
2.在类中加入spring的注解(多个不同功能的注解)
3.在spring的配置文件中,加入一个组件扫描器的标签,说明注解在你的项目中的位置
学习的注解: 1.@Component
@Component 用于创建对象 等同于bean的功能
value里的值就等同于<bean>中的id
value的值应当是唯一的 创建的对象在整个spring容器中就一个
位置:定义类的上面
@Component(value = "myStudent")
如果就只有value一个参数也可省略value
@Component("myStudent")
也可不写(中的内容)spring提供默认名称(类的名称但首字母小写)
@Component
class Student{
}
一般用第二种
<context:component-scan base-package="com.dyw.Ba01"/>
<context:component-scan base-package="com.dyw.Ba01"/>
<context:component-scan base-package="com.dyw.Ba02"/>
<context:component-scan base-package="com.dyw.Ba01;com.dyw.Ba02"/>
<context:component-scan base-package="com.dyw"/>
? 2.@Respotory
(用在持久层上的):放在dao实现类的上面
表示创建dao对象,dao对象是可以访问数据库的.
用法于@Component一致,但还有额外功能
? 3.@Service
(用在业务层上的):放在service的实现类上面,创建service对象,service对象是做业务处理的,可以有事务功能
用法于@Component一致,但还有额外功能
? 4.@Controller
(用在控制器上的):放在控制器(处理器)类的上卖弄,创建控制器对象的,
控制器对象,能够接收用户提交的参数,显示请求的处理结果
用法于@Component一致,但还有额外功能
? @Respotory(持久层) @Service(业务层) @Controller(控制层)用于给项目分层
5.@Value
@value简单类型的属性赋值
属性: value 是String类型的,表示简单类型的属性值
位置:1.在属性定义的上面,无需set方法,推荐使用.
2.在set方法上面
@Value(value = "20")
private int age;
@Value(value = "丁杨维")
private String name;
@Value("20")
public int getAge() {
return age;
}
? 6.@Autowired
@Autowired应用类型赋值
@Autowired:spring框架提供的注解,实现引用类型的赋值.
spring中通过注解给引用类型赋值,使用的是自动注入原理,支持byName,byType
@Atuowired:默认使用的是byType自动注入
@Autowired默认属性为 require = true 表示引用类型赋值失败,程序报错,并终止执行
require=false:引用类型如果赋值失败,程序正常执行,引用类型是null
位置:1) 在属性定义的上面,无需set方法,推荐使用
2) 在set方法的上面
如果使用byName方式 需要做的是:
1.在属性上面加入@Autowired
2.在属性的上面加入@Quallifier(value="bean的id"):表示使用指定名称的bean完成赋值
@Autowired
@Qualifier(value = "school01")
private School school;
@Autowired
@Qualifier(value = "school01")
private School school;
? 7.@Resource
是用之前需要再pom.xml中添加j2ee依赖
@Resource赋值引用类型: 来自jdk中的注解,spring框架提供了对这个注解的功能的支持,可以使用它给引用类型赋值
* 使用的也是自动注入原理,支持byName,byType,默认是byName
* 位置: 1)在属性定义的上面,无需set方法,推荐使用
* 2)在set方法的上面
*
* 默认是byName: 先使用byName自动注入,如果byName注入失败,再使用byType
* 不写(name = "")是默认属性名 写上就可以指定名称
@Resource(name = "school03")
private School school;
其他注解
注解可以通过与配置文件结合的方式解耦合
name=丁杨维
age=20
<context:component-scan base-package="com.dyw.Ba07"/>
<context:property-placeholder location="classpath:anno.properties"/>
public class Student {
@Value("${age}")
private int age;
@Value("${name}")
private String name;
但是@Component好像不能使用这个方式赋值 会报错
用户处理请求: 用户form ,参数name ,age-----Servlet(接收请求name,age)—Service类(处理name,age操作)—dao类(访问数据库的)—mysql
|