Spring-di基本利用

打印 上一主题 下一主题

主题 654|帖子 654|积分 1962

SpringDI

1 基础环境准备

       
流程如下

1.在自己的工程中建一个module用于SpringDi注入



2.导入spring相干的依赖

  1. <dependencies>
  2.     <!--导入spring-context依赖-->
  3.     <dependency>
  4.         <groupId>org.springframework</groupId>
  5.         <artifactId>spring-context</artifactId>
  6.         <version>6.1.12</version>
  7.     </dependency>
  8.     <!--导入测试依赖-->
  9.     <dependency>
  10.         <groupId>junit</groupId>
  11.         <artifactId><strong>junit</strong></artifactId>
  12.         <version>4.12</version>
  13.         <scope>test</scope>
  14.     </dependency>
  15.     <!--导入日志框架-->
  16.     <dependency>
  17.         <groupId>org.apache.logging.log4j</groupId>
  18.         <artifactId>log4j-core</artifactId>
  19.         <version>2.23.1</version>
  20.     </dependency>
  21.     <dependency>
  22.         <groupId>org.apache.logging.log4j</groupId>
  23.         <artifactId>log4j-slf4j2-impl</artifactId>
  24.         <version>2.23.1</version>
  25.     </dependency>
  26. </dependencies>
复制代码
3.创建spring的配置文件

1)log4j2配置文件

在resources中的文件夹中创建log4j2.xml文件。文件中的内容如下
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration status="WARN">
  3.     <Appenders>
  4.         <!--配置控制台输出日志-->
  5.         <Console name="Console" target="SYSTEM_OUT">
  6.             <!--日志的输出格式-->
  7.             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
  8.         </Console>
  9.         <!--配置文件输出日志-->
  10.         <File name="File" fileName="d:logs/app.log">
  11.             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
  12.         </File>
  13.     </Appenders>
  14.     <Loggers>
  15.         <!--日志级别为debug-->
  16.         <Root level="debug">
  17.             <AppenderRef ref="Console"/>
  18.             <AppenderRef ref="File"/>
  19.         </Root>
  20.     </Loggers>
  21. </Configuration>
复制代码
2)SpringConfig.xml

在resourse文件夹下,创建SpringConfig.xml文件,文件中的内容如下
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  5.        http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. </beans>
复制代码
4.准备实体类

 1)User实体类

        
  1. package org.xiji.enty;
  2. public class User {
  3.     private String username;
  4.     private String password;
  5.     public User(String username, String password) {
  6.         this.username = username;
  7.         this.password = password;
  8.     }
  9.     public User() {
  10.     }
  11.     public String getUsername() {
  12.         return username;
  13.     }
  14.     public void setUsername(String username) {
  15.         this.username = username;
  16.     }
  17.     public String getPassword() {
  18.         return password;
  19.     }
  20.     public void setPassword(String password) {
  21.         this.password = password;
  22.     }
  23. }
复制代码

2)Teacher实体类


  1. package org.xiji.enty;
  2. import java.util.List;
  3. import java.util.Map;
  4. public class Teacher {
  5.     private String teacherName;
  6.     private User user;
  7.     private List<User> listUser;
  8.     private Map<String, User> mapUser;
  9.     public Teacher(String teacherName, User user, List<User> listUser, Map<String, User> mapUser) {
  10.         this.teacherName = teacherName;
  11.         this.user = user;
  12.         this.listUser = listUser;
  13.         this.mapUser = mapUser;
  14.     }
  15.     public Teacher() {
  16.     }
  17.     public String getTeacherName() {
  18.         return teacherName;
  19.     }
  20.     public void setTeacherName(String teacherName) {
  21.         this.teacherName = teacherName;
  22.     }
  23.     public User getUser() {
  24.         return user;
  25.     }
  26.     public void setUser(User user) {
  27.         this.user = user;
  28.     }
  29.     public List<User> getListUser() {
  30.         return listUser;
  31.     }
  32.     public void setListUser(List<User> listUser) {
  33.         this.listUser = listUser;
  34.     }
  35.     public Map<String, User> getMapUser() {
  36.         return mapUser;
  37.     }
  38.     public void setMapUser(Map<String, User> mapUser) {
  39.         this.mapUser = mapUser;
  40.     }
  41. }
复制代码


2 SpringDi注入

1.平常属性注入

        set注入        

                通过property的 name="属性名", value="属性值"
  
  1. <!--set注入-->
  2. <bean id="user" class="org.xiji.enty.User">
  3.     <property name="username" value="xiji"/>
  4.     <property name="password" value="123456"/>
  5. </bean>
复制代码

        构造注入

                通过contructor-arg name="属性名" ,value="属性值"
  
  1. <!--构造注入-->
  2. <bean id="user2" class="org.xiji.enty.User">
  3.     <constructor-arg name="username" value="张三"/>
  4.     <<strong>constructor-arg</strong> name="password" value="123456"/>
  5. </bean>
复制代码

2.对象属性注入

        外部引入

                通过property name="属性名" ref="外部对象bean属性id"
           
  1. <!--外部对象注入-->
  2. <bean id="teacher" class="org.xiji.enty.Teacher">
  3.     <property name="teacherName" value="张老师"/>
  4.     <property name="user" <strong>ref</strong>="user"/>
  5. </bean>
复制代码


        内部创建

                在property 标签内部创建bean
  
  1. <!--内部对象注入-->
  2. <bean id="teacher2" class="org.xiji.enty.Teacher">
  3.     <property name="teacherName" value="小久"></property>
  4.     <strong><property name="user" >
  5.         <bean id="user" class="org.xiji.enty.User">
  6.             <property name="username"   value="小菊"></property>
  7.             <property name="password" value="123456"></property>
  8.         </bean>
  9.     </property></strong>
  10. </bean>
复制代码

        外部引入级联赋值

                通过property ref="外部bean对象id" 在通过property中name="bean对象+属性"  和value=“赋值”

  
  1. <!--外部对象注入+级联属性赋值-->
  2. <bean id="teacher3" class="org.xiji.enty.Teacher">
  3.     <property name="teacherName" value="惜己"></property>
  4.     <strong><property name="user" ref="user2" ></property>
  5.     <property name="user.username" value="小明"></property>
  6.     <property name="user.password" value="123456"></property></strong>
  7. </bean>
复制代码



3.List集合注入

        在property标签内部利用list标签,并且通过<ref bean=“外部beanid”>的方式引入bean
  
  1. <!--list集合注入-->
  2. <bean id="teacher4" class="org.xiji.enty.Teacher">
  3.     <property name="teacherName" value="小光"></property>
  4.     <strong><property name="listUser">
  5.         <list>
  6.             <ref bean="user"></ref>
  7.             <ref bean="user2"></ref>
  8.         </list>
  9.     </property></strong>
  10. </bean>
复制代码

4.Map集合注入

       通过property标签内部利用<map>标签,中的<entry>标签   Key(value) 和ref(引入外部对象)对map集合赋值
  1. <!--mapper注入-->
  2. <bean id="teacher5" class="org.xiji.enty.Teacher">
  3.     <property name="teacherName" value="小明"></property>
  4.    <strong> <property name="mapUser">
  5.         <map>
  6.             <entry>
  7.                 <key>
  8.                     <value>xiji</value>
  9.                 </key>
  10.                 <ref bean="user"></ref>
  11.             </entry>
  12.             <entry>
  13.                 <key>
  14.                     <value>
  15.                         zs
  16.                     </value>
  17.                 </key>
  18.                 <ref bean="user2"></ref>
  19.             </entry>
  20.         </map>
  21.     </property></strong>
  22. </bean>
复制代码
测试结果


5.通过util注入map和list

必要在头部标签导入
  
  1. beans外部标签加入
  2. xmlns:util ="http://www.springframework.org/schema/util"
  3. xsi:schemaLocation="
  4. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd "
复制代码
  1. [/code]  详细实现
  2.    [code]<!--通过util导入list集合和map集合-->
  3. <!--
  4.     beans外部标签加入
  5. <strong>   xmlns:util ="http://www.springframework.org/schema/util"
  6.     xsi:schemaLocation="
  7.     http://www.springframework.org/schema/util
  8.     http://www.springframework.org/schema/util/spring-util.xsd
  9.     "</strong>
  10. -->
  11. <<strong>util:list</strong> id="mylist" >
  12.     <ref bean="user" ></ref>
  13.     <ref bean="user2"></ref>
  14. </util:list>
  15. <util:map id="mymap">
  16.     <entry>
  17.         <key>
  18.             <value>xiji</value>
  19.         </key>
  20.         <ref bean="user"></ref>
  21.     </entry>
  22.     <entry>
  23.         <key>
  24.             <value>zs</value>
  25.         </key>
  26.         <ref bean="user2"></ref>
  27.     </entry>
  28. </util:map>
  29. <bean id="teacher6" class="org.xiji.enty.Teacher">
  30.     <property name="teacherName" value="外部测试"></property>
  31.     <property name="<strong>listUser</strong>" ref="mylist"></property>
  32.     <property name="<strong>mapUser</strong>" ref="mymap"></property>
  33. </bean>
复制代码





        

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表