- 注解开发定义bean
- 1、xml配置文件中不再使用bean标签定义bean,仅仅使用context标签开启组件扫描
- 2、使用@Component定义bean,代替复杂的xml文件配置
- 3、测试代码
- 4、测试结果
- @Component注解的衍生注解
- 衍生注解一:@Repository
- 举例
- 衍生注解二:@Service
- 举例
- 衍生注解三:@Controller
- 举例
- 纯注解开发
- 1、定义SpringConfig配置类
- 2、加载配置类容器
<context:component-scan base-package="qdxorigin.dao"/>
- "component-scan"翻译过来就是组件扫描的意思,使用"base-package"属性配置需要通过扫描加载bean的包名。
@Component("beanDao")
// @Component
public class BeanDaoImpl implements BeanDao {
public void save() {
System.out.println("beanDao save...");
}
}
- @Component(“beanDao”)这条语句就相当于xml文件中的
<bean id="beanDao" class="dao.impl.BeanDaoImpl"/>
括号里的内容就相当于id属性值
- @Component 也可以不指定名,在获取bean对象时使用按类型获取的方式
BeanDao bean = context.getBean(BeanDao.class);
不清楚bean获取方式的小伙伴可以点击查看文章"三种获取bean的方式"。
3、测试代码public class App {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
BeanDao beanDao = (BeanDao) context.getBean("beanDao");
// BeanDao beanDao = context.getBean(BeanDao.class);
System.out.println(beanDao);
}
}
4、测试结果
dao.impl.BeanDaoImpl@58a90037
- 成功打印出了地址值
该注解用于数据访问层的bean定义,数据访问层也就是我们常写的dao层、mapper层。
举例@Repository("beanDao")
// @Repository
public class BeanDaoImpl implements BeanDao {
public void save() {
System.out.println("beanDao save...");
}
}
衍生注解二:@Service
该注解用于业务逻辑层的bean定义,即service层。
举例@Service("beanService")
// @Service
public class BeanServiceImpl implements BeanService {
public void save() {
System.out.println("bean service save...");
}
}
衍生注解三:@Controller
该注解用于表现层,控制层的bean定义,即controlle层等。
举例@Controller("beanController")
// @Controller
public class BeanController {
}
纯注解开发
Spring3.0开启了纯注解开发模式,提倡使用Java类来代替xml配置文件,使用纯注解开发在极大程度上提升了开发人员的开发效率。
1、定义SpringConfig配置类@Configuration
@ComponentScan("qdxorigin.dao")
public class SpringConfig {
}
- @Configuration 注解用于设置当前类为配置类,作用相当于xml文件中的
<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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
beans>
这么多行代码一个注解就代替了,有没有感觉用注解开发很爽呢?!
- @ComponentScan(“qdxorigin.dao”) 该行代码的作用和xml配置文件中
<context:component-scan base-package="qdxorigin.dao"/>
的作用一样。
- @ComponentScan 注解用于设定扫描路径,该注解只能使用1次,如果有多个需要扫描的包,使用下述方式实现
@ComponentScan({"qdxorigin.dao","qdxorigin.service"})
2、加载配置类容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
- 因为使用了纯注解开发,没有了xml文件,自然也不能再使用"ClassPathXmlApplicationContext"的方式加载配置文件。
- 获取bean的方式和之前没有区别,还是可以使用getBean方法进行获取。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)