hat die gleiche Funktion wie die @Component-Annotation, es gibt jedoch drei Annotationen mit unterschiedlichen Bedeutungen:
1) @Repository: Annotation zur Dao-Implementierungsklasse
2) @Service: Annotiert zur Service-Implementierungsklasse
3) @Controller: Annotiert zum SpringMVC-Prozessor
Bean-Bereich:
@Scope("prototype"): Wird zur Angabe der Objekterstellung verwendet Modus, kann Singleton-Modus oder Prototyp-Modus sein, der Standardwert ist Singleton
Grundlegende Typattributinjektion:
@Value
@Autowired: byType-Annotationsinjektion, dh basierend auf Typannotationen
@Qualifier("mySchool"): byName-Annotationsinjektion, muss in Verbindung mit @Autowired verwendet werden, wenn @Qualifier verwendet wird
Domain-Attribut-Annotation:
@Resource: Ohne die Namensattribut-Annotationsinjektion byType-Modus, aber die Voraussetzung ist, dass das injizierte Objekt nur eine
@Resource(name="mySchool") haben kann: Annotation-Injektion im byName-Modus
Das Leben der Bean:
@PostConstruct : Die aktuelle Bean wurde gerade initialisiert
@PreDestroy: Die aktuelle Bean wird gerade zerstört
@Configuration: Zeigt an, dass die aktuelle Klasse als Spring-Container fungiert, d. h. alle Beans werden erstellt von dieser Klasse
Hinweis:
Bevor Sie ein Beispiel geben, sollten mehrere Punkte angegeben werden:
1. Anmerkungen müssen vom spring-aop-4.3 abhängen. 9.RELEASE.jar Paket, daher müssen sie importiert werden Abhängigkeitspaket.
2. Mit Annotation injizieren, die Konfigurationsdatei muss hinzugefügt werden Constraint-Header-Datei:
<?xml version="1.0" encoding="UTF-8"?><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/spring-beans.xsd http://www.springframework.org/schema/context/spring-context.xsd">
Sie können diese Header-Datei auch selbst in der Spring-Dokumentation finden:
3. Wenn SpringJUnit4-Test verwendet wird, müssen Sie auch das Paket spring-test-4.3.9.RELEASE.jar importieren
1 Schulklasse:
package com.ietree.spring.basic.annotation.demo1;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component; @Component("mySchool")public class School { @Value(value = "清华大学")private String name;public School() {super(); }public School(String name) {super();this.name = name; }public void setName(String name) {this.name = name; } @Overridepublic String toString() {return "School [name=" + name + "]"; } }
Schülerklasse erstellen:
package com.ietree.spring.basic.annotation.demo1;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;/** * 说明: * 与@Component注解功能相同,但意义不同的注解还有三个: * 1)@Repository:注解在Dao实现类上 * 2)@Service:注解在Service实现类上 * 3)@Controller:注解在SpringMVC的处理器上 * * Bean作用域: * @Scope("prototype"):用于指定对象创建模式,可以是单例模式或者原型模式,默认是singleton * * 基本类型属性注入: * @Value * * @Autowired:byType方式的注解式注入,即根据类型注解 * @Qualifier("mySchool"):byName方式的注解式注入,在使用@Qualifier时必须与@Autowired联合使用 * * 域属性注解: * @Resource:不加name属性则为byType方式的注解式注入,但前提是注入的对象只能有一个 * @Resource(name="mySchool"):byName方式的注解式注入 * * Bean的生命始末: * @PostConstruct:当前Bean初始化刚完毕 * @PreDestroy:当前Bean即将被销毁 *///@Scope("prototype")@Component("myStudent")public class Student { @Value(value = "小明")private String name; @Value(value = "25")private int age; // @Autowired// @Qualifier("mySchool")// @Resource(name="mySchool") @Resourceprivate School school;// 对象属性,也叫做域属性public Student() {super(); } public Student(String name, int age) {super();this.name = name;this.age = age; }public void setName(String name) { System.out.println("执行setName()");this.name = name; }public void setAge(int age) { System.out.println("执行setAge()");this.age = age; }public void setSchool(School school) {this.school = school; } @Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", school=" + school + "]"; } @PostConstructpublic void initAfter(){ System.out.println("当前Bean初始化刚完毕"); } @PreDestroypublic void preDestroy(){ System.out.println("当前Bean即将被销毁"); } }
MyJavaConfig-Klasse erstellen:
package com.ietree.spring.basic.annotation.demo1;import org.springframework.beans.factory.annotation.Autowire;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @Configuration:表示当前类充当Spring容器,即所有的Bean将由这个类来创建 */@Configurationpublic class MyJavaConfig { @Bean(name="mySchool")public School mySchoolCreator(){return new School("清华大学"); } // autowire=Autowire.BY_TYPE:指从当前类这个容器中查找与域属性的类型具有is-a关系的Bean// autowire=Autowire.BY_NAME:指从当前类这个容器中查找与域属性同名的Bean@Bean(name="myStudent", autowire=Autowire.BY_TYPE)public Student myStudentCreator(){return new Student("小明", 25); } }
Konfigurationsdatei erstellen:
<?xml version="1.0" encoding="UTF-8"?><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/spring-beans.xsd http://www.springframework.org/schema/context/spring-context.xsd">
Testklasse erstellen:
package com.ietree.spring.basic.annotation.demo1;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="classpath:com/ietree/spring/basic/annotation/demo1/applicationContext.xml")public class MyTest { @Autowiredprivate Student student; @Testpublic void test01() { String resource = "com/ietree/spring/basic/annotation/demo1/applicationContext.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(resource); School school = (School) ctx.getBean("mySchool"); System.out.println(school); Student student = (Student) ctx.getBean("myStudent"); System.out.println(student); ((ClassPathXmlApplicationContext)ctx).close(); } public void test02(){ System.out.println(student); } }
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Annotationsfunktion in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!