Spring的java注解配置
一、Java注解配置是Spring4.x推荐的配置方式,可以完全替代xml配置。Spring的Java注解配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:
1、@Configuration 作用于类上,相当于一个xml配置文件;
2、@Bean 作用于方法上,相当于xml配置中的<bean>;
示例:这两个注解的用法
1、创建实体类:User.java
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String username;
private String password;
private Integer age;
//省略set/get方法
}
2、创建Dao层,模拟数据库访问:UserDao.java
public class UserDao {
public List<User> findAll(){
List<User> users = new ArrayList<User>();
for(int i=1;i<10;i++) {
User user = new User();
user.setUsername(i+"号");
user.setPassword(i+"1234");
user.setAge(i+21);
users.add(user);
}
return users;
}
}
3、创建Service层:UserService.java
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> findAllUser(){
return userDao.findAll();
}
}
4、创建注解类,相当于spring的主配置文件applicationContext.xml
@Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages="com.boot.service") //配置扫描包
public class SpringAnnotation {
@Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
public UserDao getUserDao()
{
return new UserDao();
}
}
5、测试:
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringAnnotation.class);
UserService userService = context.getBean(UserService.class);
List<User> list = userService.findAllUser();
for(User u : list) {
System.out.println(u.getUsername()+"\t"+u.getPassword()+"\t"+u.getAge());
}
context.close();
}
}
6、从以上的示例中可以看出,使用Java代码就完美的替代xml配置文件,并且结构更加的清晰。
二、读取外部的资源配置文件,通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法:
@PropertySource(value= {"classpath:jdbc.properties"})
public class SpringAnnotation {
@Value("${jdbc.driver}")
private String driver_class;
@Value("${jdbc.url}")
private String jdbc_url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource getDataSource() {
DataSource dataSource = new DataSource();
dataSource.setDriverClassName(driver_class);
dataSource.setUrl(jdbc_url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean
public SqlSessionFactoryBean getSqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(this.getDataSource());
return sessionFactory;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现