• Spring框架的认识一


    一、

    1.dao

     1 package com.zhidi.dao;
     2 
     3 import com.zhidi.entity.Emp;
     4 
     5 public class EmpDao {
     6 
     7     public Integer save(Emp emp)
     8     {
     9         if(emp!=null)
    10         {
    11             return 12;
    12         }
    13         return -2;
    14     }
    15 }
    View Code
     1 package com.zhidi.dao;
     2 
     3 import com.zhidi.entity.User;
     4 
     5 public class UserDao {
     6     
     7     public Integer save(User user)
     8     {
     9         if(user!=null)
    10         {
    11             return 112;
    12         }
    13         return 0;
    14     }
    15 
    16 }
    View Code

    2.entity

     1 package com.zhidi.entity;
     2 
     3 import java.util.Arrays;
     4 import java.util.List;
     5 import java.util.Map;
     6 import java.util.Set;
     7 
     8 public class Collection1 {
     9 
    10     private List<String> list;
    11     private Set<Integer> set;
    12     private Map<String, Object> map;
    13     private String[] str;
    14     public List<String> getList() {
    15         return list;
    16     }
    17     public void setList(List<String> list) {
    18         this.list = list;
    19     }
    20     public Set<Integer> getSet() {
    21         return set;
    22     }
    23     public void setSet(Set<Integer> set) {
    24         this.set = set;
    25     }
    26     public Map<String, Object> getMap() {
    27         return map;
    28     }
    29     public void setMap(Map<String, Object> map) {
    30         this.map = map;
    31     }
    32     public String[] getStr() {
    33         return str;
    34     }
    35     public void setStr(String[] str) {
    36         this.str = str;
    37     }
    38     @Override
    39     public String toString() {
    40         return "Collection [list=" + list + ", set=" + set + ", map=" + map + ", str=" + Arrays.toString(str) + "]";
    41     }
    42     
    43     
    44 }
    View Code
    1 package com.zhidi.entity;
    2 
    3 public class Emp {
    4 
    5 }
    View Code
    1 package com.zhidi.entity;
    2 
    3 public class User {
    4 
    5 }
    View Code

    3.test

     1 package com.zhidi.test;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 import com.zhidi.dao.UserDao;
     7 import com.zhidi.entity.Collection1;
     8 import com.zhidi.entity.User;
     9 import com.zhidi.service.EmpService;
    10 import com.zhidi.service.UserService;
    11 import com.zhidi.util.ConnectionPool;
    12 
    13 public class TestSpring {
    14 
    15     public static void main(String[] args) {
    16          //创建APPlicationContext对象
    17          ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    18          //从Spring容器中获得UserDao
    19          UserDao userDao = applicationContext.getBean(UserDao.class);
    20          int a=userDao.save(new User());
    21          System.out.println(a);
    22          
    23          
    24          //从Spring容器中获得UserService
    25          UserService service=  applicationContext.getBean(UserService.class);
    26          boolean b=service.save(null);
    27          System.out.println(b);
    28          
    29          //从Spring容器中获得EmpService
    30          EmpService emp=applicationContext.getBean(EmpService.class);
    31          System.out.println(emp.save(null));
    32          
    33          
    34          test();
    35          test1();
    36     }
    37     
    38     
    39     
    40     public static void test()
    41     {
    42         ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
    43         //注册时确保调用销毁的方法
    44         applicationContext.registerShutdownHook();
    45         applicationContext.getBean(ConnectionPool.class);
    46         System.out.println(applicationContext.getBean(ConnectionPool.class).toString());
    47     }
    48     
    49     public static void test1()
    50     {
    51         ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
    52         
    53         applicationContext.getBean(Collection1.class);
    54         System.out.println(applicationContext.getBean(Collection1.class).toString());
    55     }
    56     
    57     
    58 }
    View Code

    4.service

     1 package com.zhidi.service;
     2 
     3 import com.zhidi.dao.EmpDao;
     4 import com.zhidi.entity.Emp;
     5 
     6 public class EmpService {
     7  
     8     private EmpDao empDao;
     9     //Spring通过该方法将依赖对象empDao注入
    10     public void setEmpDao(EmpDao empDao) {
    11         this.empDao = empDao;
    12     }
    13 
    14     public boolean save(Emp emp)
    15     {
    16         if(empDao.save(emp)>0)
    17         {
    18             return true;
    19         }
    20         return false;
    21     }
    22 }
    View Code
     1 package com.zhidi.service;
     2 
     3 import com.zhidi.dao.UserDao;
     4 import com.zhidi.entity.User;
     5 
     6 public class UserService {
     7     private UserDao userDao;
     8 
     9     /*
    10      * 定义有参的构造方法
    11      */
    12     public UserService(UserDao userDao) {        
    13         this.userDao = userDao;
    14     }
    15     
    16     public boolean save(User user)
    17     {
    18         if(userDao.save(user)>0)
    19         {
    20             return true;
    21         }
    22         return false;
    23     }
    24 }
    View Code

    5.util

     1 package com.zhidi.util;
     2 
     3 
     4 
     5 public class ConnectionPool {
     6     
     7     private String userName;
     8     private Integer age;
     9     private String sex;
    10     private String birthday;
    11     
    12 
    13     public String getUserName() {
    14         return userName;
    15     }
    16 
    17     public void setUserName(String userName) {
    18         this.userName = userName;
    19     }
    20 
    21     public Integer getAge() {
    22         return age;
    23     }
    24 
    25     public void setAge(Integer age) {
    26         this.age = age;
    27     }
    28 
    29     public String getSex() {
    30         return sex;
    31     }
    32 
    33     public void setSex(String sex) {
    34         this.sex = sex;
    35     }
    36 
    37     public String getBirthday() {
    38         return birthday;
    39     }
    40 
    41     public void setBirthday(String birthday) {
    42         this.birthday = birthday;
    43     }
    44 
    45     public void init()
    46     {
    47         System.out.println("初始化");
    48     }
    49     
    50     public void destroy()
    51     {
    52         System.out.println("销毁");
    53     }
    54 
    55     @Override
    56     public String toString() {
    57         return "ConnectionPool [userName=" + userName + ", age=" + age + ", sex=" + sex + ", birthday=" + birthday
    58                 + "]";
    59     }
    60     
    61     
    62 }
    View Code
     1 package com.zhidi.util;
     2 
     3 public class SingleTon {
     4     
     5     private static SingleTon singleTon;
     6     private SingleTon(){
     7         
     8     }
     9     
    10     public static SingleTon getInstance()
    11     {
    12         if(singleTon==null)
    13         {
    14             singleTon=new SingleTon();
    15             
    16         }
    17         
    18         return singleTon;
    19     }
    20 
    21 }
    View Code

    6.properties

    1 #userName=zsdfghj
    2 age=22
    3 sex="u7537"
    4 birthday="1993.4.7"
    5 name=u4E8C
    View Code

    7.applicationContext.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     xmlns:context="http://www.springframework.org/schema/context"
     5     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     6     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  ">
     7     <!-- 读取外部配置 -->
     8     <context:property-placeholder location="info.properties" />
     9     <!-- 将自定义的UserDao交给Spring管理 -->
    10     <bean name="userDao" class="com.zhidi.dao.UserDao" />
    11     <!-- 通过有参方法注入依赖对象 -->
    12     <bean class="com.zhidi.service.UserService">
    13         <constructor-arg ref="userDao" />
    14     </bean>
    15 
    16     <!-- 将自定义的EmpDao交给Spring管理 scope默认为singleton,只实体化一次,而prototype每次都实例化 -->
    17     <bean name="empDao" class="com.zhidi.dao.EmpDao" scope="prototype" />
    18 
    19     <!--将empDao通过set注入给EmpService -->
    20     <bean class="com.zhidi.service.EmpService">
    21         <property name="empDao" ref="empDao" />
    22     </bean>
    23 
    24     <!--JavaBean生命周期的方法 -->
    25     <!-- <bean class="com.zhidi.util.ConnectionPool" init-method="init" destroy-method="destroy"/> -->
    26 
    27     <!-- 普通属性的装配 -->
    28     <bean class="com.zhidi.util.ConnectionPool" scope="singleton"
    29         init-method="init">
    30         <property name="userName" value="${name}" />
    31         <property name="age" value="${age}" />
    32         <property name="sex" value="${sex}" />
    33         <property name="birthday" value="${birthday}" />
    34     </bean>
    35 
    36     <!-- 集合属性的装配 -->
    37     <bean class="com.zhidi.entity.Collection1">
    38         <!-- list集合 -->
    39         <property name="list">
    40             <list>
    41                 <value>二蛋</value>
    42                 <value>三狗子</value>
    43             </list>
    44         </property>
    45         <!-- set集合 -->
    46         <property name="set">
    47             <set>
    48                 <value>1</value>
    49                 <value>2</value>
    50             </set>
    51         </property>
    52         <!--Map集合 -->
    53         <property name="map">
    54             <map>
    55                 <entry key="name1" value="丹丹"></entry>
    56                 <entry key="name2" value="蛋蛋"></entry>
    57             </map>
    58         </property>
    59         <!-- 数组 -->
    60         <property name="str">
    61             <array>
    62                 <value>二狗蛋</value>
    63                 <value>逗比猫</value>
    64             </array>
    65         </property>
    66     </bean>
    67 </beans>
    View Code

    二、

    1.dao

     1 package com.zhidi.dao;
     2 
     3 import javax.annotation.Resource;
     4 
     5 import org.springframework.context.annotation.Primary;
     6 
     7 import com.zhidi.entity.Emp;
     8 
     9 public class EmpDao {
    10     /*
    11      * //@Resource 默认byName注入
    12      * 
    13      * @Resource //指定优先被装配的对象
    14      * 
    15      * @Primary
    16      */
    17     public Integer save(Emp emp) {
    18         if (emp != null) {
    19             return 1;
    20         }
    21         return -1;
    22     }
    23 }
    View Code
     1 package com.zhidi.dao;
     2 
     3 import javax.annotation.PostConstruct;
     4 import javax.annotation.PreDestroy;
     5 //生命周期注解引入
     6 public class LifeDao {
     7 
     8     @PostConstruct
     9     public void init()
    10     {
    11         System.out.println("初始化开启");
    12     }
    13     
    14     @PreDestroy
    15     public void destroy()
    16     {
    17         System.out.println("销毁");
    18     }
    19 }
    View Code
     1 package com.zhidi.dao;
     2 
     3 import org.springframework.stereotype.Component;
     4 import org.springframework.stereotype.Controller;
     5 import org.springframework.stereotype.Repository;
     6 import org.springframework.stereotype.Service;
     7 
     8 import com.zhidi.entity.User;
     9 @Component
    10 @Service
    11 @Repository
    12 @Controller
    13 public class UserDao {
    14     
    15     public Integer save(User user)
    16     {
    17         if(user!=null)
    18         {
    19             return 1;
    20         }
    21         return -1;
    22     }
    23 
    24 }
    View Code

    2.entity

    1 package com.zhidi.entity;
    2 
    3 public class Emp {
    4 
    5 }
    View Code
    1 package com.zhidi.entity;
    2 
    3 public class User {
    4 
    5 }
    View Code

    3.service

     1 package com.zhidi.service;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.beans.factory.annotation.Qualifier;
     5 
     6 import com.zhidi.entity.Emp;
     7 
     8 public class EmpService {
     9     // required=false 忽略对依赖对象的装配
    10     // @Autowired按byType注入
    11     @Autowired(required = false)
    12     // 指定要装配的Bean的id
    13     @Qualifier("emp")
    14     private Emp emp;
    15 
    16 }
    View Code
     1 package com.zhidi.service;
     2 
     3 import com.zhidi.dao.UserDao;
     4 import com.zhidi.entity.User;
     5 
     6 public class UserService {
     7     
     8     private UserDao userDao;
     9     //为依赖提供set注入方法
    10     public void setUserDao(UserDao userDao) {
    11         this.userDao = userDao;
    12     }
    13     
    14     public boolean save(User user)
    15     {
    16         if(userDao.save(user)>0)
    17         {
    18             return true;
    19         }
    20         return false;
    21     }
    22 }
    View Code

    4.test

     1 package com.zhidi.test;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 import com.zhidi.dao.LifeDao;
     7 import com.zhidi.entity.User;
     8 import com.zhidi.service.EmpService;
     9 import com.zhidi.service.UserService;
    10 
    11 public class TestUser {
    12     //自动装配
    13     public static void main(String[] args) {
    14         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
    15         context.getBean(UserService.class);
    16         //System.out.println(context.getBean(UserService.class).save(new User()));
    17     
    18       test(context);
    19       test1(context);
    20     }
    21     
    22     //注解引入
    23     public static void test(ApplicationContext context)
    24     {
    25           System.out.println(context.getBean(EmpService.class).hashCode());
    26     }
    27     
    28     //生命周期注解引入
    29     public static void test1(ApplicationContext context)
    30     {
    31         context.getBean(LifeDao.class);
    32                 
    33     }
    34 }
    View Code

    5.applicationContext.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" xmlns:context="http://www.springframework.org/schema/context"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     5     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">
     6     <!-- 开启注解配置 -->
     7     <context:annotation-config />
     8     <!-- 将UserDao注入Spring中 -->
     9     <!-- autowire-candidate="false" 将当前Bean排除依赖列表 -->
    10     <bean class="com.zhidi.dao.UserDao" autowire-candidate="false" />
    11     <!-- primary="true" 将当前Bean优先依赖列表 -->
    12     <bean class="com.zhidi.dao.UserDao" primary="true" />
    13     <bean class="com.zhidi.dao.UserDao" />
    14     <bean id="userDao" class="com.zhidi.dao.UserDao" />
    15 
    16     <!-- 将UserService注入Spring中 byType是按类型注入 byName要设置id id是set提供的 -->
    17     <bean class="com.zhidi.service.UserService" autowire="byName" />
    18 
    19     <!-- 将EmpDao和EmpService注入Spring中 -->
    20     <bean class="com.zhidi.dao.EmpDao" />
    21     <!-- 指定primary属性,首先的装配对象 -->
    22     <bean class="com.zhidi.service.EmpService" primary="true" />
    23     <!-- 生命周期注解引入 -->
    24     <bean class="com.zhidi.dao.LifeDao" />
    25 
    26     <!-- 指定去包下扫描Bean -->
    27     <context:component-scan base-package="com.zhidi" />
    28 </beans>
    View Code

  • 相关阅读:
    ADO.NET 根据实体类自动生成添加修改语句仅限Oracle使用
    C# 实体对象作为参数统一去除空格
    jQuery 前端复选框 全选 反选 下拉菜单联动
    C# 后台服务器端 Get 请求函数封装
    服务器404错误页面
    vue 封装公用函数
    Vue 生命周期
    Oracle 查看表结构
    ubuntu源配置
    外观(Facade)模式
  • 原文地址:https://www.cnblogs.com/zclqian/p/7449674.html
Copyright © 2020-2023  润新知