SpringIoc

来源:互联网 发布:mac qq 远程协助 编辑:程序博客网 时间:2024/05/19 08:03

Spring基础

  • Spring框架常见组件介绍:

    • IoC:控制反转,Inversion of Control,实现组件之间的解耦
    • Di:依赖注入,Dependency Injection.铜鼓spring实现依赖对象之间的注入
    • AOP:Aspect Oriented Programming,面向切面的编程,是面向对象编程的有益补充
    • ORM:提供了与其他第三方持久层框架的整和技术,从而实现事务控制
    • SpringMVC:主流的易于使用的MVC框架
    • SpringData,SpringBoot等拓展技术
  • Spring IoC概述:

  • 实体类
package com.study.entity;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;/** * @author dell * */public class User {    private Integer id;    private String username;    private String password;    private Dept dept;    private Date date;    private Calendar cal;    private String[] love;    private List<String> list;    private Set<String> set;    private Map<String, String> map;    private Properties pro;    public Dept getDept() {        return dept;    }    public void setDept(Dept dept) {        this.dept = dept;    }    public Date getDate() {        return date;    }    public void setDate(Date date) {        this.date = date;    }    public Calendar getCal() {        return cal;    }    public void setCal(Calendar cal) {        this.cal = cal;    }    public String[] getLove() {        return love;    }    public void setLove(String[] love) {        this.love = love;    }    public List<String> getList() {        return list;    }    public void setList(List<String> list) {        this.list = list;    }    public Set<String> getSet() {        return set;    }    public void setSet(Set<String> set) {        this.set = set;    }    public Map<String, String> getMap() {        return map;    }    public void setMap(Map<String, String> map) {        this.map = map;    }    public Properties getPro() {        return pro;    }    public void setPro(Properties pro) {        this.pro = pro;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public User() {        super();    }    public User(Integer id, String username, String password) {        super();        this.id = id;        this.username = username;        this.password = password;    }    @Override    public String toString() {        return "User [id=" + id + ", username=" + username + ", password=" + password + ", dept=" + dept + ", date="                + date + ", cal=" + cal + ", love=" + Arrays.toString(love) + ", list=" + list + ", set=" + set                + ", map=" + map + ", pro=" + pro + "]";    }}
  • IoC容器(BeanFactory):在应用程序中使用IoC容器实现应用中所有的对象(bean)的同一管理,包括创建,统一注入,生命周期,范围等.
    • 需要引入的包
      • commons-logging-1.2.jar
        spring-beans-4.3.13.RELEASE.jar
        spring-context-4.3.13.RELEASE.jar
        spring-context-support-4.3.13.RELEASE.jar
        spring-core-4.3.13.RELEASE.jar
        spring-expression-4.3.13.RELEASE.jar
      • IoC实现的方式
        • 通过无参构造方法创建Bean
          • <bean name="user1" class="com.study.entity" />
        • 通过静态工厂创建Bean
          • <bean name="cal" class="java.util.Calendar" factory-method="getInstance"/>
        • 通过实例工厂创建Bean
          * <bean name="factory" class="com.study.Factory.InstanceUser"></bean>
          <bean name="user2" factory-bean="factory" factory-method="getUser"></bean>

如果实体类中有properties属性,属性值注入方法
方法1通过< property>标签

<bean name="user1" class="com.study.entity.User">        <property name="pro">            <props>                <prop key="class">com.study.entity</prop>                <prop key="username">root</prop>                <prop key="password">1234</prop>            </props>        </property>
方法二:
<util:properties location="db.properties" id="db1"></util:properties>    <bean name="user1" class="com.study.entity.User">        <property name="pro" ref="db1">        </property>    </bean>

Bean的作用范围:在bean标签中使用scope规范定义bean的范围,其值可以是:
(1)singleton:单例,默认范围,在java 应用中使用
(2)prototype:多例,在java 应用中使用.在ssh或者ssm整合后对应Action或者Controller的实例都将纳入Spring的IoC容器统一
管理,注意bean的作用范围是prototype。
(3)request:在web应用中使用
(4)session:在web应用中使用

Di注解:
首先在xml引入
<context:component-scan base-package="com.study"></context:component-scan>

1、IoC注解:
(1)@Component:通用的使用在类上的IoC的注解,相当于,不建议使用这个注解了
(2)@Scope:定义bean的作用范围
(3)@Repository:使用在Dao层的类上的注解,用户创建Dao层对象
(4)@Service:使用在业务逻辑层的注解用于创建Service层对象
(5)@Controller:使用在控制层类上的注解
2、依赖注入的注解:对于依赖的注入可以写在属性上面或者setter方法上面
(1)@Autowired:根据类型进行注入
(2)@Resource:默认根据类型注入,如果类型相同可以根据名字进行注入

原创粉丝点击