Spring纯注释开发
@Component 标识了一个受Spring管理的组件
- @Component的三个衍生注释
- @Controller 表现层
- @Service 业务层
- @Repository 数据层
@Controller
public class UserController {
}
@Service
public class UserService {
}
@Repository
public class UserRepository {
}
自动装配
- @Autowired 默认通过类型装配 required = false--装配不上也不会报错
- @Qualifier("name") 通过名字装配 只能搭配@Autowired使用
- @Value 通过简单类型装配
public class UserService {
@Autowired(required = false)
@Qualifier("parent")
private Parent parent;
public void start(){
parent.begin();
}
}
public class UserService {
@Value("520")
private String name;
}
@configuration 设定当前类为配置类
@ComponentScan("com.spring") 扫描路径,只能添加一次,多个路径用数组格式
@Configuration
@ComponentScan("com.spring")
public class SpringConfig {
}
@Configuration
@ComponentScan({"com.spring","com.spring.service"})
public class SpringConfig {
}
@Bean配置第三方bean
@Configuration
public class SpringConfig {
@Bean
public DataSource dataSource(){
DruidDataSource dataSource=new DruidDataSource();
dataSource.setDriverClassName("com.oracle.jdbc.OracleDriver");
dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
dataSource.setUsername("system");
dataSource.setPassword("oracle");
return dataSource;
}
}
@PropertySource 加载properties文件
@Configuration
@ComponentScan("com.spring")
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
}
多文件使用数组格式,不允许用通配符*
@Configuration
@ComponentScan("com.spring")
@PropertySource({"classpath:jdbc.properties","jdbc1.properties"})
public class SpringConfig {
}
bean生命周期
-
@PostConstruct 对象依赖注入后执行
-
@PreDestroy 对象消毁之前执行
-
@Scope 指定bean的作用域
5种作用域
Singleton:单例,初始化容器的时候创建,并且整个bean的生命周期内,只有一个对象
Propertype:原型,初始化容器的时候不创建,每调用一次getBean创建一个对象
Request:仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于 WebApplicationContext环境
Session:仅用于HTTP Session, 同一个Session共享一个Bean实例。不同Session使用不同的实例
Global-session:仅用于HTTP Session, 同session 作用域不同的是,所有的Session共享一个Bean实例
@Repository
@Scope("singleton")
public class UserRepository {
@PostConstruct
public void init(){
}
@PreDestroy
public void destroy(){
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)