Spring框架
1、什么是spring
spring是一个分层的java EE应用full-stack轻量级开源框架,以IOC(反转控制)和AOP(面向切面编程)为内核
2、Spring的优势
1)方便解耦、简化开发
通过spring提供的IOC容器,可以将对象间的依赖关系交给spring进行控制
2)AOP编程的支持
3)声明式事物的支持
4)方便程序的测试
5)方便集成各种优秀的框架
spring对各种优秀的框架的支持
6)减低Java EE API的使用难度
7)经典学习的范例
3、Spring的开发步骤
1)导入spring开发的基本包坐标
2)编写Dao接口和实现类
3)创建Spring核心配置文件
4)在Spring配置文件中配置UserDaoImpl
5)使用spring的API获得Bean实例
Spring Bean的配置
Spring配置文件
配置bean
class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须无参数
通过构造方法来配置Bean的属性
<bean id="car" class="com.atguigu.spring.beans.car">
<constructor-arg values="Audi" index="0"><constructor-arg>
<constructor-arg values="ShangHai" index="1"><constructor-arg>
<constructor-arg values="30000" type="double"><constructor-arg>
<bean>
<bean>标签
ID属性:在容器中bean实例的唯一标识,不允许重复
class属性:要实例化的Bean的权限定名
scope属性:Bean的作用范围,常用的是Singletion(默认)和prototype
<property>标签:属性注入
name属性:属性名称
value属性:注入的普通属性值
ref属性:注入的对象引用值
<list>标签
<map>标签
<properties>标签
<constructor-arg>标签
<import>标签:导入其他的Spring的分文件
使用构造器注入属性值可以指定参数的位置和参数的类型,以区分重载的构造器
<bean id="car2" class="com.atguigu.spring.beans.car">`
<constructor-arg values="Baoma" type="java.Lang.String"><constructor-arg>
<constructor-arg values="ShangHai" type="java.Lang.String"><constructor-arg>
<constructor-arg values="240" type="int"><constructor-arg>
<bean>
ID:标识容器中的bean,ID唯一
1、创建spring的IOC容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext(application);
2、从IOC容器中获取Bean实例
3、调用hello方法
BeanFactory:IOC容器本身实现
ApplicationContext:从类路径加载对象
Spring 依赖注入的方式
属性注入:通过setter方法注入Bean的属性或依赖的对象,最常用的注入方式
4、Spring相应API
4.1 ApplicationContext的实现类
//测试手动去创建的c3p0的数据源
public void test1() throws PropertyVetoException, SQLException {
ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mysql"); dataSource.setUser("root");
dataSource.setPassword("123456");
Connection conn = dataSource.getConnection();
System.out.println(conn);
conn.close();}
Spring原始注解
@Component 使用在类上用于实例化Bean
1、首先添加@Component("userDao")注解,需要解析加入@Autowired@Qualifier("userDao")注解
2、在xml文件中,加入
```
<!-- 配置组件扫描:告诉spring在哪个包上的bean需要扫描--> <context:component-scan base-package="com.ityxnu"/>
```
如果使用的xml的注解方法,那么set方法是不能删除;如果使用的是注解方法,set方法是可以删除的
@Autowried 按照数据类型从spring容器中进行匹配 的,但是主要此处@Qualifier结合@Autowried
@Controller 使用web层类上用于实例化Bean
@Service 使用在service层类上用于实例化Bean
@Repository 使用在dao层类上用于实例化Bean
@Autowired 使用在字段上用于根据类型依赖注入
@Qualifier 结合@Autowired 一起使用于根据名称进行依赖注入
@Resource 相当于@Autowired +@Qualifier,按照名称进行注入
@Value 注入普通属性
@Scope 标注Bean的作用范围
spring新注解
@Configuration 用于指定当前类是一个spring配置类,当创建容器时会从该类加载注解
@ComponentScan 用于指定Spring在初始化容器时要扫描的包,作用和在Spring的xml配置文件中的<context:component-scan base-package="com.itheima"/>一样
@Bean 使用在方法上,标注将该方法的返回值存储到Spring容器中
@PropertySource 用于加载.properties文件中的位置
@Import 用于导入其他配置类