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(){

   }
}
posted @   猪儿虫的幸福生活  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示