040_Spring注解开发
2024-10-12 05:22:11
Spring注解开发
<?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>
bean注册到Spring容器中
applicationContext.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:annotation-config/>
<!--指定要扫描的包,包下的注解就会生效-->
<context:component-scan base-package="com.qing"/>
</beans>
实体类添加注解@Component
package com.qing.dao;
import org.springframework.stereotype.Component;
@Component
public class User {
private String name;
}
import com.qing.dao.User;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void test01(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = context.getBean("user", User.class);
System.out.println(user.getName());
}
}
User实体类被Spring管理,通过@Component注解注册到Spring容器中
属性注入
属性添加注解@Value("张三丰")
package com.qing.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class User {
@Value("张三丰")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import com.qing.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void test01(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = context.getBean("user", User.class);
System.out.println(user.getName());
}
}
@Component的衍生注解
在web开发中,会按照MVC三层架构分层,分别使用注解,但他们的作用和@Component注解是一样的,都是将类注册到spring容器中,只是为了标记分层使用不同的注解
dao层 @Repository
package com.qing.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
}
service层 @Service
package com.qing.service;
import org.springframework.stereotype.Service;
@Service
public class UserService {
}
controller层 @Controller
package com.qing.controller;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
}
自动装配
作用域
单例@Scope("singleton") 原型@Scope("prototype")
package com.qing.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("singleton")
//@Scope("prototype")
public class User {
@Value("张三丰")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
xml与注解区别
@Configuration 不使用Spring的xml配置,完全Java来做
JavaConfig是Spring的一个子项目,在Spring4之后,它成为了一个核心功能
添加配置类
@Configuration代表这是一个配置类
package com.qing.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
// @Configuration代表这是一个配置类,相当于applicationContext.xml
@Configuration
// @ComponentScan 扫描包下注解
@ComponentScan("com.qing.pojo")
// @Import 导入其他配置类
@Import(QingConfig2.class)
public class QingConfig {
}
实体类添加注解
package com.qing.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class User {
@Value("张三丰")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
测试
import com.qing.config.QingConfig;
import com.qing.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MyTest {
@Test
public void test01(){
// 通过AnnotationConfigApplicationContext获取容器,通过配置类的class加载
ApplicationContext context = new AnnotationConfigApplicationContext(QingConfig.class);
User user = context.getBean("user", User.class);
System.out.println(user.getName());
}
}
最新文章
- Netty Client重连实现
- 安装MySQLdb
- POJ 3140 Contestants Division
- Swift-04-Designated&;&;Convenience
- placeholder兼容
- 私有IP地址范围
- SQL开发利器SQL Prompt
- poj 1716 差分约束
- 更改debian的软件源sources.list
- 每日必读(2) --Base64
- WMI测试器
- linux find命令-print0和xargs中-0使用技巧
- MySQL Unable to convert MySQL datetime value to System.DateTime 解决方案
- Struts2之类型转换
- 异步处理XML异步数据——以原生的JavaScript与jQuery中的$.ajax()为例
- 力扣(LeetCode) 852. 山脉数组的峰顶索引
- loadrunner json参数化
- 修改nginx日志格式为json
- 【从0到1学Web前端】CSS伪类和伪元素 分类: HTML+CSS 2015-06-02 22:29 1065人阅读 评论(0) 收藏
- Redis学习基础三