Spring​反射技术怎么用

今天小编给大家分享一下Spring反射技术怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

站在用户的角度思考问题,与客户深入沟通,找到迁安网站设计与迁安网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖迁安地区。

无参数的

Java代码

Class.forName(className).newInstance;     //有参数的     Class.forName(className).getDeclaredConstructor(String.class).newInstance(“黎明”);     //通过反射获取属性     Introspector.getBeanInfo(Person.class).getPropertyDescriptors()     //通过反射机制修改bean属性的值     Person person=(Person)Class.forName(className).getDeclaredConstructor(String.class).newInstance("黎明");     PropertyDescriptor[] ps = Introspector.getBeanInfo(Person.class).getPropertyDescriptors();     for(PropertyDescriptor p :ps){     System.out.println(p.getName());     if(p.getName().equals("name")){     Method setter=p.getWriteMethod();     if(setter!=null){     setter.setAccessible(true);//允许访问private属性     setter.invoke(person, "小燕子");         //通过反射机制修改bean字段的值     Field field=Person.class.getDeclaredField("name");     field.setAccessible(true);//允许访问private字段     field.set( person , "sss");              Class.forName(className).newInstance;  //有参数的  Class.forName(className).getDeclaredConstructor(String.class).newInstance(“黎明”);  //通过反射获取属性  Introspector.getBeanInfo(Person.class).getPropertyDescriptors()  //通过反射机制修改bean属性的值  Person person=(Person)Class.forName(className).getDeclaredConstructor(String.class).newInstance("黎明");  PropertyDescriptor[] ps = Introspector.getBeanInfo(Person.class).getPropertyDescriptors();  for(PropertyDescriptor p :ps){  System.out.println(p.getName());  if(p.getName().equals("name")){  Method setter=p.getWriteMethod();  if(setter!=null){  setter.setAccessible(true);//允许访问private属性  setter.invoke(person, "小燕子");   //通过反射机制修改bean字段的值  Field field=Person.class.getDeclaredField("name");  field.setAccessible(true);//允许访问private字段  field.set( person , "sss");

Spring提供了声明式的事务管理

软件的解耦合,不是硬编码

Spring 需要的jar

Dist\spring.jar

lib\jakarta-commons\commons-logging.jar

如果使用了切面编程(AOP),还需要下列jar文件

lib/aspectj/aspectjweaver.jar和aspectjrt.jar   lib/cglib/cglib-nodep-2.1_3.jar

如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件

lib\j2ee\common-annotations.jar

配置文件beans.xml

Java代码

     t;beans xmlns="http://www.springframework.org/schema/beans"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://www.springframework.org/schema/beans              http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">                   t;/beans>                

怎么启动spring容器Java代码

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");     Person s = (Person)context.getBean("xx");        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");  Person s = (Person)context.getBean("xx");


默认bean是容器启动时实例化,只在容器中创建一次,spring中的对象一直存在容器中,是单例模式

表 3.4. Bean作用域

作用域       描述
singleton    在每个Spring IoC容器中一个bean定义对应一个对象实例。
prototype    一个bean定义对应多个对象实例。
request       在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。
session        在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global session     在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。

Spring入门—利用工厂方法创建bean

Java代码 

public class PersonFactory {     public static Person createPerson(){         return new Person();     }     public Person createPerson2(){         return new Person();     }        public class PersonFactory {   public static Person createPerson(){    return new Person();   }   public Person createPerson2(){    return new Person();   }  }

Java代码

//使用静态工厂方法实例化          使用实例工厂方法实例化                    //使用静态工厂方法实例化   使用实例工厂方法实例化    

Spring入门—依赖注入

Java代码

public class Person {             private Integer id;         private String name="aa";         private IDCard idcard;                  public IDCard getIdcard() {             return idcard;         }             public void setIdcard(IDCard idcard) {             this.idcard = idcard;         }             public Person(String name) {             this.name = name;         }                  public Person() {         }         public Integer getId() {             return id;         }         public void setId(Integer id) {             this.id = id;         }         public String getName() {             return name;         }         public void setName(String name) {             this.name = name;         }              }     public class IDCard {         private String no;             public String getNo() {             return no;         }             public void setNo(String no) {             this.no = no;         }     }         public class Person {    private Integer id;   private String name="aa";   private IDCard idcard;      public IDCard getIdcard() {    return idcard;   }    public void setIdcard(IDCard idcard) {    this.idcard = idcard;   }    public Person(String name) {    this.name = name;   }      public Person() {   }   public Integer getId() {    return id;   }   public void setId(Integer id) {    this.id = id;   }   public String getName() {    return name;   }   public void setName(String name) {    this.name = name;   }     }  public class IDCard {   private String no;    public String getNo() {    return no;   }    public void setNo(String no) {    this.no = no;   }  }


***种方法
Java代码

                                                                     

第二种方法

Java代码 

                                                           

为属性配置null值

Java代码 

             public class Person {         private String name="ss";     public Person(){}         public Person(String name) {             this.name = name;         }         public String getName() {             return name;         }         public void setName(String name) {             this.name = name;         }                  public void say(){             System.out.println("我说了");         }     }         public class Person {   private String name="ss";  public Person(){}   public Person(String name) {    this.name = name;   }   public String getName() {    return name;   }   public void setName(String name) {    this.name = name;   }      public void say(){    System.out.println("我说了");   }  }

初始化bean执行say方法相当于测试单元的@BeforeClass

集合依赖注入

Java代码 

                               1111                 2222                 3333                 4444                        for(String s : p.getLists){                 System.out.println(s);             }                                    TTT                 YYY                         for(String s : p.getSets){                 System.out.println(s);             }                                                                            for(String key : p.getMaps().keySet()){                 System.out.println(key+"="+ p. getMaps ().get(key));             }     Properties 是注入                                  value1                 value2                      for(Object key : p.getPropers().keySet()){                 System.out.println(key+"="+ p.getPropers().get(key));             }

以上就是“Spring反射技术怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。


当前名称:Spring​反射技术怎么用
网址分享:http://csdahua.cn/article/jgcesg.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流