Spring Ioc 对象的创建的方式及属性注入

配置好后的调用方式

 

//获取aplicationContext.xml 中的配置
ApplicationContext context = new ClassPathXmlApplicationContext("aplicationContext.xml");
//根据<bean>标签中的id获取对象
User user = (User) context.getBean("user");
logger.info(user.toString());

 

对象的创建及属性的注入
 

注入方式则有三种,分别是配置注入(XML)、注解注入、bean和configuration注入。

XML方式创建和注入

  • 基本类型注入
<!--利用property标签进行注入,name为表名,value为数据-->
    <bean id="user" class="com.cn.bean.User">
        <property name="uid" value="1"></property>
        <property name="username" value="测试"></property>
    </bean>
  •  对象类的注入(实例化)

 

 <!--
      1、创建属性对象MySqlUserDaoImpl(如果是Bean类型)
           a)必须添加setter()方法注入属性(演示采用该方式)
           b)通过构造方法注入属性(后面讲解)
      2、创建对象userService
    -->
    <bean id="userDao" class="com.java.dao.impl.MySqlUserDaoImpl"></bean>
    <bean id="userService" class="com.java.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
    </bean>

//注意需要在被注入类添加setter方法
public void setUserDao(UserDao userdao){
     this.userDao = userdao;
}
  • 集合类型注入
<!--
    集合属性的注入:
        list:添加list节点,然后内部如果对象是bean用ref,如果是基本数据类型用value
        set:添加set节点,然后内部如果对象是bean用ref,如果是基本数据类型用value
        map:添加map节点,由于map存储的数据是key和value,添加一个entry节点
            对应key,如果类型是基本数据类型用value,否则用ref
            对应value,如果类型是基本数据类型用value,否则用ref
        properties:添加props节点,然后里面再添加prop节点
-->
<bean id="test" class="com.java.bean.Test">
    <property name="list">
        <list>
            <value>鲁班</value>
            <value>公孙墨</value>
        </list>
    </property>
    <property name="set">
        <set>
            <value>红楼梦</value>
            <value>三国演义</value>
        </set>
    </property>
    <property name="map">
        <map>
            <entry>
                <key><value>k9501</value></key>
                <value>Java架构师班</value>
            </entry>
            <entry>
                <key><value>k9502</value></key>
                <value>Java全栈班</value>
            </entry>
            <entry>
                <key><value>k9503</value></key>
                <value>前端全栈班</value>
            </entry>
        </map>
    </property>
    <property name="properties">
        <props>
            <prop key="username">root</prop>
            <prop key="password">1234abc</prop>
        </props>
    </property>
</bean>

 

注解注入

 

参考博客:https://www.cnblogs.com/wangbin2188/p/9014400.html

注解的作用:创建Bean,注入到容器;为Bean注入属性

注解的分类

用于创建类的注解: @Component():把普通pojo实例化到spring容器中,相当于配置文件中的;@Service():业务层的类使用;@Controller():控制器(控制层)类使用; @Repository():Dao数据访问层(持久层)的类使用(MyBatis使用的是代理,不需要写Dao)

*如果括号内不提供命名,则系统默认以小写字母开头的类名;注解标签相当于XML配置文件中的 <bean id=""  class=""/>,其中注解的name相当于xml文件中的id。之所以创建这三个功能与@Component等效的注解,是为了以后对其进行功能上的扩展,使它们不再等效。

@Component("user")
public class user{   }

@Service("userService")
public class userServiceImpl implements userService {}

@Controller

@Repository("userDao")
public class MySqlUserDao implements UserDao {}

注入属性的注解: @Autowired:按照类型进行注入,如果Spring容器中创建并管理了某个Bean,要注入的时候,到容器中查找是否有该类型的Bean,如果有就注入,没有就报异常;@Qualifier("name"):按名称注入域属性,要与Autowired联合使用且AutoWired在前;@Resource(name=“”):Autowired和Qualifier的结合体,若无Name则按类型,若有Name则按名称;@value("张三"):基本数据类型属性注入。

 

环境配置

1、POM依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>4.3.23.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.3.23.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.3.23.RELEASE</version>
</dependency>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值