概述
文章目录
- 一、Spring注解开发
- 1.搭配环境
- 2.bean和属性的注解
- 3.衍生注解
- 4.自动装配注解
- 5.作用域注解
- 6.小结
- 二、使用JavaConfig实现配置
一、Spring注解开发
1.搭配环境
在Spring4之后,要使用注解开发,必须要保证aop的包导入!
beans.xml配置:
<?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:component-scan base-package="com.gaolang.pojo"/>
<context:annotation-config/>
</beans>
com.gaolang.pojo包下的实体类:
User.java
package com.gaolang.pojo;
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + ''' +
'}';
}
}
2.bean和属性的注解
- @Component 等价于
<bean id="user" class="com.gaolang.pojo.User"/>
可以使用此注解描述 Spring 中的 Bean,但它是一个泛化的概念,仅仅表示一个组件(Bean),并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可。 - @Value 等价于
<property name="name" value="高朗"/>
作用是通过注解将常量、配置文件中的值、其他bean的属性值注入到变量中,作为变量的初始值。
User.java
package com.gaolang.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
//等价于 <bean id="user" class="com.gaolang.pojo.User"/>
@Component
public class User {
// 等价于<property name="name" value="高朗"/>
@Value("高朗")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + ''' +
'}';
}
}
测试类:
import com.gaolang.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user = context.getBean("user", User.class);
System.out.println(user.toString());
}
}
运行结果:
User{name='高朗'}
3.衍生注解
@Component 的衍生注解,web开发中,按照mvc三层架构分层!功能用法相同。
- @Repository
用于将数据访问层(DAO层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同。 - @Service
通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。 - @Controller
通常作用在控制层(如 Struts2 的 Action),用于将控制层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
4.自动装配注解
前面文章已经写了,文章指路:bean的自动装配
5.作用域注解
-
@Scope默认是单例模式(singleton)
-
如果需要设置的话@scope(“prototype”)
-
1.singleton单例模式,
全局有且仅有一个实例
- 2.prototype原型模式,
每次获取Bean的时候会有一个新的实例
- 使用时只需将该注解标注在相应类上即可
6.小结
- xml与注解:
- xml更加万能,适用于任何场合!维护简单方便
- 注解不是自己类使用不了,维护相对复杂!
- xml与注解最佳实践:
- xml用来管理bean;
- 注解只负责完成属性的注入;
- 我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持:
<context:component-scan base-package="com.gaolang.pojo"/>
<context:annotation-config/>
二、使用JavaConfig实现配置
完全通过Java代码实现,不需要beans.xml配置,但是需要一个配置类
- pojo实体类User.java
package com.gaolang.pojo;
import org.springframework.beans.factory.annotation.Value;
public class User {
// 等价于<property name="name" value="高朗"/>
@Value("高朗")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + ''' +
'}';
}
}
- 配置类beansConfig.java:
@Configuration:代表这是一个配置类,就和我们之前看的beans.xml
@ComponentScan(“com.gaolang.pojo”) 等价于 <context:component-scan base-package="com.gaolang.pojo"/>
@Import(XXX.class):加其他的配置类
@Bean:相当于bean标签
package com.gaolang.config;
import com.gaolang.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//@Configuration代表这是一个配置类,就和我们之前看的beans.xml
//@ComponentScan("com.gaolang.pojo") 等价于 <context:component-scan base-package="com.gaolang.pojo"/>
//如果要加其他的配置类,@Import(XXX.class)
@Configuration
@ComponentScan("com.gaolang.pojo")
public class beansConfig {
//这个相当于注册一个bean标签
//这个方法的名字,就相当于bean标签中的id属性
//这个方法的返回值,就相当于bean标签中的class属性
@Bean
public User user(){
return new User();
}
}
- 测试类:
ApplicationContext context = new AnnotationConfigApplicationContext(beansConfig.class);
import com.gaolang.config.beansConfig;
import com.gaolang.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(beansConfig.class);
User user = context.getBean("user", User.class);
System.out.println(user.toString());
}
}
最后
以上就是爱笑皮皮虾为你收集整理的Spring注解开发一、Spring注解开发二、使用JavaConfig实现配置的全部内容,希望文章能够帮你解决Spring注解开发一、Spring注解开发二、使用JavaConfig实现配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复