复习之spring基础(一)——控制反转(ioc)和依赖注入(di)

Spring的核心——控制反转

ioc: 反转控制. 创建对象的方式反转了.从我们自己创建对象,反转给spring(程序)来创建.

实现ioc思想需要,di做支持

di: 依赖注入.将必须的属性注入到对象当中.是实现ioc思想必须条件.

三种对象创建方式

  • 无参构造创建对象





  • 通过静态工厂的某个方法创建一个user对象

  • 实例工厂创建对象


静态工厂和实例工厂类如下:

public class UserFactory {
     public static User createUser(){
         System.out.println("通过静态工厂的某个方法创建一个user对象");
         return new User();
     }
 
     public User createUser2(){
         System.out.println("实例工厂创建对象");
         return new User();
     }
}

依赖注入的方式

  • set方法(主要方式)

 8     
 9         
10         
11         
12         
13         
14     
  • 构造方法注入
    
         
         
         
         
     
  • p属性注入

     
     

spel表达式注入

  
     
         
         
         
     

复杂属性注入

public class CollectionBean {
     private Object[] arr;//数组
     private List list;//集合
     private Map map;//map集合
     private Properties properties;//资源文件
    //get、set、toString方法省略
}
  • Array

     
         
         
         
         
             
                 maniy
                 mark
                 
             
         
     
  • List\Set
    
     
         
         
         
         
             
                 maniy
                 mark
                 
             
         
     
  • Map
    
     
         
             
                 
                 
                 
             
         
     
  • Properties
 
     
         
             
                 com.jdbc.mysql.Driver
                 root
                 123456
             
         
     

注解方式

配置注解扫描

   

@Component

Spring 中提供@Component 的三个衍生注解:(功能目前来讲是一致的)

  • @Controller :WEB 层
  • @Service :业务层
  • @Repository :持久层

这三个注解是为了让标注类本身的用途清晰,Spring 在后续版本会对其增强

属性注入的注解:(使用注解注入的方式,可以不用提供 set 方法.)

  • @Value :用于注入普通类型.

  • @Autowired :自动装配:

默认按类型进行装配.
按名称注入:
@Qualifier:强制使用名称注入.

  • @Resource 相当于: @Autowired 和@Qualifier 一起使用.

  • @Scope:
    singleton:单例
    prototype:多例

  • Bean 的生命周期的配置
    @PostConstruct :相当于 init-method
    @PreDestroy :相当于 destroy-method

//@Component("user")
//	@Service("user") // service层
//	@Controller("user") // web层
@Repository("user")// dao层
//指定对象的作用范围
@Scope(scopeName="singleton")
public class User {
	private String name;
	@Value("18")
	private Integer age;
	
	//@Autowired //自动装配
	//问题:如果匹配多个类型一致的对象.将无法选择具体注入哪一个对象.
	//@Qualifier("city1")//使用@Qualifier注解告诉spring容器自动装配哪个名称的对象
	
	@Resource(name="city2")//手动注入,指定注入哪个名称的对象
	private City city;
	@PostConstruct //在对象被创建后调用.init-method
	public void init(){
		System.out.println("我是初始化方法!");
	}
	@PreDestroy //在销毁之前调用.destory-method
	public void destory(){
		System.out.println("我是销毁方法!");
	}
}

XML 和注解:

  • XML :结构清晰.
  • 注解 :开发方便.(属性注入.)

实际开发中还有一种 XML 和注解整合开发:

  • Bean 有 XML 配置.但是使用的属性使用注解注入.

你可能感兴趣的:(ssm框架)