Spring注解
1.使用注解須知:
1.導入限制:
xmlns:context=“http://www.springframework.org/schema/context”
2.×××配置注解支援:
context:annotation-config/
最終:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
2.注解實作自動裝配
使用Autowired:可以指定單個不重複的id,而如果要指定某個id時要使用@Qualifier(value = “xxx”)
public class People {
/*zhushi自動導入*/
@Autowired
private Cat cat;
@Qualifier(value = "dog2")
private Dog dog;
private String name;
<bean id="dog1" class="com.zz.pojo.Dog"/>
<bean id="dog2" class="com.zz.pojo.Dog"/>
<!--使用@Qualifier(value = "dog2")進行指定裝配-->
<bean id="dog3" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/>
<bean id="cat2" class="com.zz.pojo.Cat"/>
<bean id="people" class="com.zz.pojo.People">
<property name="name" value="李四"/>
</bean>
3.使用注解開發
在spring4後要保證aop包存在
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-irncuFDy-1584778596018)(C:\Users\19353\AppData\Roaming\Typora\typora-user-images\image-20200321115516293.png)]
使用注解要加入注解支援
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
1.bean
1.1 Component:元件
//等價于<bean id ="user" class="com.zz.pojo.User"/>
@Component
public class User {
public String name="張三";
}
在使用Component注解時要指定掃描的包
<!--指定要掃描的包,這個包下的注解就會生效--> <context:component-scan base-package="com.zz.pojo"/> <context:annotation-config/>
[email protected]:相當于<property name=“name” value=“張三”
@Component
public class User {
//相當于<property name="name" value="張三"
@Value("張三")
public String name;
}
1.3衍生的注解
@Component有幾個衍生的注解,我們在web開發中,分三層架構
- dao: @Repository
- service : @Service
- controller : @Controller
這四個注解作用相同,都是将某個類注冊到Spring中,裝配Bean
2.Scope:指定模式
@Scope("singleton")
<!--單例模式-->
<bean scope="singleton"/>
<!--原型模式-->
<!-- <bean scope="prototype"/>-->
4.javaConfig:
不需要xml了,直接由javaConfig管理
@Controller
public class User {
@Value("阿三")
private String name;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//Configuration代表這是一個配置類,beans.xml
//這個也會spring容器托管,注冊到容器中,因為它本來就是一個@Component
@Configuration
public class MyConfig {
@Bean
public User getUser(){
return new User();
}
}
public class MyTest {
public static void main(String[] args){
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
User getUser = (User)context.getBean("getUser");
System.out.println(getUser.getName());
}