-
spring核心功能
IOC:控制反转,原来擦黄健对象用new,现在把创建对象的过程交给spring
AOP:面向切面编程。在不修改源码的情况下更改功能。 -
特点
1.方便解耦,简化开发
2.aop支持
3.方便测试
4.方便和其它框架整合 -
IOC
(1)控制反转,把对象的创建和调动的过程,交给spring
(2)目的:降低耦合度、
(3)BeanFactory
(4)底层原理:XML解析、工厂模式 -
Spring实现IOC的方法:
1.BeanFactory,内部接口,无法外部使用
2.Applicationcontext -
引入外部文件xml方式
Spring中的注解
- 注解
1.可以作用在类上、方法上面、属性上面
2.简化xml配置 - Spring针对bean管理中创建对象提供的注解
这些注解一般加在类上。
(1)Component:普通注解
(2)Service:一般用在业务逻辑层、Service曾
(3)Controller:一般用在web层上
(4)Repository :用在dao层、持久层。
以上注解功能是一样的,都能创建对象
基于注解创建对象
- 1.引入依赖
引入Spring AOP 依赖 - 2.开启组件扫描
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-beans.xsd">
<context:component-scan base-package="com.*"></context:component-scan>
</beans>
- 3.使用注解
注解属性注入
这些注解一般加在实现类的语句上
(1)@Autowired:根据属性类型进行自动注入
(2)@Qualifier:根据属性名称进 行注入,一般和autowired一起使用
(3)@Resource:都可以
(4)@Value:注入普通类型属性
- 1.创建Service和Dao对象注解
package com.Dao;
public interface UserDao {
public void add();
}
package com.Dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("Dao add.....");
}
}
- 2.Service中注入对象
package com.Server;
import com.Dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service(value = "user")
public class User {
//定义Dao类型属性
//不用加set方法,因为已经封装
//添加注入属性注解,在属性上面添加注解
@Autowired
private UserDao userDao;
public void add(){
System.out.println("add 方法...");
}
}
在实际中一般一个接口对应一个实现类。
Qualifier使用实例
一般Qualifier注解和Autowired注解一块使用。
- 当有一个接口有多个实现类对象的时候,使用Qualifier注解指定实现类
Resource使用
根据类型注入、根据名称注入
Value
注入普通类型属性,如字符串等
完全注解开发实例
即不用xml配置文件
创建配置类 ,目的:用来替代xml配置文件,其他不变
手动创建一个配置类,然后加上注解即可。此时可以删掉xml配置文件了。
package com.confige;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration//这个注解表示当前类为配置类,替代xml配置文件
@ComponentScan(basePackages = {"com.*"})//等于配置类中的扫描
public class SpringConfig {
}
- 测试类的编写
public class Test1 {
@Test
public void test(){
ApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);//加载配置类
User user=context.getBean("user",User.class);
System.out.println(user);
}
}