- 可以在为类配置注解,然后在配置文件中指定哪一个包下有注解的类都注册成java bean,spring没有使用约定由于配置的做法,根据注解配置bean的类的路径要显式指定。
- 要特别指出的是,这些通过注解的bean,spring给他们的id是将类名全部改成小写字母
- 天道酬勤,来吧
package InstanceClass; import org.springframework.stereotype.Component; //使用Component说明要spring把这个类当成普通的javabean注册,其实还可以注册成为其他的类的 @Component public class ClassA { private String name; void setName(String name) { this.name = "ok"; } public void thisIsMyName(){ System.out.println("A' s name is " + name); } }
package InstanceClass; import org.springframework.stereotype.Component; //同上 @Component public class ClassB { private String name; void setName(String name) { this.name = "ok1"; } public void thisIsMyName(){ System.out.println("B' s name is " + name); } }
package TestPackage; import InstanceClass.ClassA; import InstanceClass.ClassB; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; //测试类 public class SpringTest { public static void main(String []args){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); ClassA classA = applicationContext.getBean("classA", ClassA.class); System.out.println(classA.toString()); ClassB classB = applicationContext.getBean("classB", ClassB.class); System.out.println(classB.toString()); } }
<?xml version="1.0" encoding="GBK"?> <!--要使用注解的话,就要先引入对应的配置--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!--显式指定要在那个路径下自动配置bean--> <context:component-scan base-package="InstanceClass"/> </beans>
-
然后介通过注解来指定bean的作用域(是每次产生一个实例呀,还是单例模式)
-
这就是为bean的实现类添加@scope注解,像这样,在scope注解的参数就是指定它的作用域了。
@Scope("prototype") @Component("classA") public class ClassA { ...... }
-
-
是不是发现还差了一个很重要的地方?对!类成员变量的赋值,怎能少了这个呢?
-
实现方法是使用@Resource和@Value注解,@Resource注解的作用等同于在配置文件中 使用ref,@value就是直接赋值啦,少侠看招!
-
首先是一个很大的坑,就是我的jdk里没有javax.Annotaion这个包,还得我自己去下载后添加进去,添加包操作以前说过啦,就是File->Project Structure-> + >选择要的包,点击确定。我把我找到的包分享出来,居然有人拿这个卖五个c币,过分。。。大家需要什么包可以留言,我可以试试看帮你们找找,义务。javax.annotation jar
-
然后就是代码啦,在ClassA里增加一个ClassB的成员变量,然后注解,需要特别指出的是,这两个注解可以对set方法注解,也可以直接对值注解,当对值注解的时候,可以去掉set方法。
package InstanceClass; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Scope; import javax.annotation.*; import org.springframework.stereotype.Component; //使用Component说明要spring把这个类当成普通的javabean注册,其实还可以注册成为其他的类的 @Scope("prototype") @Component("classA") public class ClassA { @Value("classA") private String name; private ClassB classB; @Resource(name = "classB") public void setClassB(ClassB classB) { this.classB = classB; } public ClassB getClassB(){ return classB; } public void thisIsMyName(){ System.out.println("A' s name is " + name); } }
-
-
-
这是我看李刚编著的《轻量级javaEE企业应用实战(第五版)-Struts2+Spring5+Hibernate5/JAP2》后总结出来的。
Spring 进阶(5) 使用注解配置bean(1)
猜你喜欢
转载自blog.csdn.net/weixin_39452731/article/details/84892749
今日推荐
周排行